php join 构造sql查询语句

 更新时间:2016年11月25日 17:11  点击:1635

join() 函数把数组元素组合为一个字符串。

join() 函数是 implode() 函数的别名。

例子

<?php教程
$arr = array('hello','world!','beautiful','day!');
echo join(" ",$arr);
?>输出:

hello world! beautiful day!

下面是一段dedecms搜索页面的条件利用了join函数

if($this->starttime > 0)
  {
   $ksqls[] = " arc.senddate>'".$this->starttime."' ";
  }
  if($this->typeid > 0)
  {
   $ksqls[] = " typeid in (".getsonids($this->typeid).") ";
  }
  if($this->channeltype > 0)
  {
   $ksqls[] = " arc.channel='".$this->channeltype."'";
  }
  if($this->mid > 0)
  {
   $ksqls[] = " arc.mid = '".$this->mid."'";
  }
  $ksqls[] = " arc.arcrank > -1 ";
  $this->addsql = ($ksql=='' ? join(' and ',$ksqls) : join(' and ',$ksqls)." and ($ksql)" );

它这里就构成了一条select * from 表 where 条件,根据$ksql多少来构造成一条完整的sql查询语句

注释:join() 可以接收两种参数顺序。但是由于历史原因,explode() 是不行的。你必须保证 separator 参数在 string 参数之前才行。

 

数据库教程中的表可通过键将彼此联系起来。主键(primary key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

<?
function relative_to_absolute($content, $feed_url) { 
preg_match('/(http|https教程|ftp):///', $feed_url, $protocol); 
$server_url = preg_replace("/(http|https|ftp|news):///", "", $feed_url); 

$server_url = preg_replace("//.*/", "", $server_url); 
    if ($server_url == '') { 
        return $content; 
    } 
    if (isset($protocol[0])) { 
$new_content = preg_replace('/href="//', 'href="'.$protocol[0].$server_url.'/', $content); 
$new_content = preg_replace('/src="//', 'src="'.$protocol[0].$server_url.'/', $new_content); 
    } else { 
$new_content = $content; 
    } 
    return $new_content; 

?>

//获得当前的脚本网址

<?
function get_php_url(){
        if(!empty($_server["request_uri"])){

 

$scriptname = $_server["request_uri"];
$nowurl = $scriptname;
        }else{
$scriptname = $_server["php_self"]; //
                if(empty($_server["query_string"])) $nowurl = $scriptname;
                else $nowurl = $scriptname."?".$_server["query_string"];
        }

//

        return $nowurl;
}

?>

 

 

php教程 数据类型和变量
php是弱类型的,一个变量不需要预先声明,也不需要指定类型。php中变量是$加上变量名,php的变量是区分大小写的。 例如上例中的 $my='my'。
php支持的变量类型包括:布尔型,整型,浮点型,字符串,数组和对象。前四种很常用,也和其他语言类似,不多做介绍。数组和对象后文具体介绍。
php中有函数来检测 对象的类型,它们是 getttype。gettype返回一个string,它的值可以是array,boolean,double,integer,object,resource,string 和 unknow type. php也支持显式的类型转换,语法和c类似。
转换操作符 转换为
(array) 数组
(bool) (boolean) 布尔型
(int) (integer) 整数
(object) 对象
(float),(double),(real) 浮点数
(string) 字符串
例如:
 代码如下:
<?php
$str ='a string';
$num=15;
$numstr='123.3';
echo gettype($str),'<br/>';
echo gettype($num),'<br/>';
echo gettype($numstr),'<br/>';
$numstr=(float)$numstr;
echo gettype($numstr);
?>

输出结果为:

string
integer
string
double

还有函数可以用来判断一个变量是不是某种类型,例如 is_array(),is_bool()等等,用法都类似。

3. 函数和变量作用域
php声明函数的方法很简单,形式如下:
 代码如下:
function functionname(parameters){
function body
}

不需要指定返回类型,括号中也不需要指定变量类型,只要有变量名就可以。例如:
 代码如下:
<?php
function taxedprice($price,$taxrate){
return $price*(1+$taxrate);
}
echo taxedprice(100, 0.03);
?>

默认情况下,php是按值传递参数的,在函数内改变参数的值并不会改变函数外变量的值,但是php也支持按引用传递,语法和c一致,&$paramname,例如,下面一个经典的例子:
 代码如下:
<?php
function swap1($x,$y){
$t=$x;$x=$y;$y=$t;
}
function swap2(&$x,&$y){
$t=$x;$x=$y;$y=$t;
}
$a=3;$b=5;
swap1($a,$b);
printf("a is %d, b is %d <br/>",$a,$b);
swap2($a,$b);
printf("a is %d, b is %d <br/>",$a,$b);
?>

输出结果:

a is 3, b is 5
a is 5, b is 3

php的函数还支持参数的默认值,语法和c也是一样的。例如:
 代码如下:
<?php
function taxedprice($price,$taxrate=0.03){
return $price*(1+$taxrate);
}
echo taxedprice(100);
?>

下面介绍变量的作用域。php的变量作用域和c很类似,有局部变量,函数参数,全局变量,静态变量4种。局部变量就是在函数内声明的变量,函数参数是在函数首部声明的变量;不在函数中声明的变量是全局变量,全局变量可以在任何地方访问到,但是和c不同的是,如果在函数中要修改全局变量的值需要用global关键字显式指定它是全局变量,否则php就会声明一个同名的局部变量并且覆盖它。例如:
 代码如下:
<?php
$taxrate=0.03; //global
function change1() {
$taxrate+=1;
}
function change2() {
global $taxrate;
$taxrate+=1;
}
change1();
echo $taxrate,'<br/>';
change2();
echo $taxrate,'<br/>';
?>

输出的结果是:

0.03

1.03

php还有一种超级全局变量。超级全局变量是由php系统预定义的,主要用来访问与环境有关的信息,例如当前用户会话,用户操作环境和本地环境等。超级全局变量是一个数组,例如$_server中存储了服务器相关的信息。$_get,$_post,$_files,$_cookie中分别存储了客户端采用get提交,和post的提交的信息,上传的文件,cookie信息等。这些变量的使用都很简单,需要什么信息只需要查找

4 变量的变量
和c一类的静态语言不同,php的变量名本身可以是一个变量,这对于需要动态生成很多变量的时候是很便利的。例如:
 代码如下:
<?php
$r="hello";
$$r="i am hello";
echo $hello;
?>

输出结果为: i am hello

5.流程控制语句
主要包括,if else, while,for,do while,switch. 这些和c语言都很像,基本是一致的。不多做介绍。有些不同,php的 elseif是一个关键字,是连在一起的,而c语言是else if

php教程 ereg()邮箱验证与文件名验证
字符串比对解析。

语法: int ereg(string pattern, string string, array [regs]);

返回值: 整数/数组

函数种类: 资料处理


 
 
内容说明


本函数以 pattern 的规则来解析比对字符串 string。比对结果返回的值放在数组参数 regs 之中,regs[0] 内容就是原字符串 string、regs[1] 为第一个合乎规则的字符串、regs[2] 就是第二个合乎规则的字符串,余类推。若省略参数 regs,则只是单纯地比对,找到则返回值为 true。
 
 
使用范例
这个例子是 markus@dnet.it 在 14-jun-1999 所提出的,可对使用者输入的 e-mail 作简单的检查,检查使用者的 e-mail 字符串是否有 @ 字符,在 @ 字符前有英文字母或数字,在之后有数节字符串,最后的小数点后只能有二个或三个英文字母。super@mail.wilson.gs 就可以通过检查,super@mail.wilson 就不能通过检查。

<?php
if (eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$email)) {
  echo "您的 e-mail 通过初步检查";
}
?>

看一下

dedecms文件验证

if(!eregi("^[a-z0-9_-]{1,}.lib.php$",$filename))
  {
   showmsg('文件不是标准的标签碎片文件,不允许在此编辑!','-1');
   exit();
  }
  $fp = fopen(dedeinc.'/taglib/'.$filename,'r');
  $democode = fread($fp,filesize(dedeinc.'/taglib/'.$filename));
  fclose($fp);
  $title = "修改标签";

 

php中 mysql_result mysql_fetch_row mysql_fetch_array mysql_fetch_object四种函数的详细说明

mysql教程_result():优点在于使用方便;其缺点在于功能少,一次调用只能获取结果数据集中的一行元素,对较大型的数据库教程效率较低;

mysql_result() 函数返回结果集中一个字段的值。

如果成功,则该函数返回字段值。如果失败,则返回 false。

语法
mysql_result(data,row,field)参数 描述
data 必需。规定要使用的结果标识符。该标识符是 mysql_query() 函数返回的。
row 必需。规定行号。行号从 0 开始。
field 可选。规定获取哪个字段。可以是字段偏移值,字段名或 table.fieldname。

如果该参数未规定,则该函数从指定的行获取第一个字段。
 

<?php教程
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('could not connect: ' . mysql_error());
  }

$db_selected = mysql_select_db("test_db", $con);

$sql = "select * from person";
$result = mysql_query($sql,$con);

echo mysql_result($result,0);

mysql_close($con);

?>

mysql_fetch_row():优点在于执行效率在4种方法中最高;不足在于只能用数字作为属性索引来获得属性值,在使用时非常容易出现混淆;

mysql_fetch_row() 函数从结果集中取得一行作为数字数组。

语法
mysql_fetch_row(data)参数 描述
data 必需。要使用的数据指针。该数据指针是从 mysql_query() 返回的结果。

说明
mysql_fetch_row() 从和结果标识 data 关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。

依次调用 mysql_fetch_row() 将返回结果集中的下一行,如果没有更多行则返回 false。

返回值
返回根据所取得的行生成的数组,如果没有更多行则返回 false。
例子

<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('could not connect: ' . mysql_error());
  }

$db_selected = mysql_select_db("test_db",$con);
$sql = "select * from person where lastname='adams'";
$result = mysql_query($sql,$con);
print_r(mysql_fetch_row($result));

mysql_close($con);
?>输出:

array
(
[0] => adams
[1] => john
[2] => london
)


mysql_fetch_array():执行效率同样高,同mysql_fetch_row()相差无几,并界可以用属性名方式直接获得属性值,因此在实际应用中最常用;

定义和用法
mysql_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有

返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。

语法
mysql_fetch_array(data,array_type)参数 描述
data 可选。规定规定要使用的数据指针。该数据指针是 mysql_query() 函数产生的结果。
array_type 可选。规定返回哪种结果。可能的值:

mysql_assoc - 关联数组
mysql_num - 数字数组
mysql_both - 默认。同时产生关联和数字数组
 
提示和注释
注释:mysql_fetch_array() 是 mysql_fetch_row() 的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。

提示:有很重要的一点必须指出,用 mysql_fetch_array() 并不明显比用 mysql_fetch_row() 慢,而且还明显提供了更多的值。

注释:本函数返回的字段名是区分大小写的。
例子

<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('could not connect: ' . mysql_error());
  }

$db_selected = mysql_select_db("test_db",$con);
$sql = "select * from person where lastname='adams'";
$result = mysql_query($sql,$con);
print_r(mysql_fetch_array($result));

mysql_close($con);
?>输出类似:

array
(
[0] => adams
[lastname] => adams
[1] => john
[firstname] => john
[2] => london
[city] => london
)

mysql_fetch_object():采用了面向对象思想,在设计思路上更为先进,如果习惯于用面向对象的思路来写程序,则会很自地选择它。其次,该方法的优点还体现在,对于结构较为负责的数据结果,在逻辑上更为清晰。

mysql_fetch_object() 函数从结果集(记录集)中取得一行作为对象。

若成功的话,本函数从 mysql_query() 获得一行,并返回一个对象。如果失败或没有更多的行,则返回 false。

语法
mysql_fetch_object(data)参数 描述
data 必需。要使用的数据指针。该数据指针是从 mysql_query() 返回的结果。
提示和注释
注释:每个随后对 mysql_fetch_object() 的调用都会返回记录集中的下一行。

注释:mysql_fetch_object() 与 mysql_fetch_array() 类似,只有一点区别 - 返回的是对象而不是数组。间接地,也意味着只能通过字段名来访问数组,而不是偏移量。
例子

<?php
$con = mysql_connect("localhost", "peter", "abc123");
if (!$con)
  {
  die('could not connect: ' . mysql_error());
  }

$db_selected = mysql_select_db("test_db",$con);
$sql = "select * from person";
$result = mysql_query($sql,$con);

while ($row = mysql_fetch_object($result))
  {
  echo $row->firstname . "<br />";
  }

mysql_close($con);
?>输出:

john
george
thomas

[!--infotagslink--]

相关文章

  • Mybatis Plus select 实现只查询部分字段

    这篇文章主要介绍了Mybatis Plus select 实现只查询部分字段的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-01
  • mysql中获取一天、一周、一月时间数据的各种sql语句写法

    创建表:复制代码 代码如下:create table if not exists t( id int, addTime datetime default '0000-00-00 00:00:00′)添加两条初始数据:insert t values(1, '2012-07-12 21:00:00′);insert t values(2, '2012-07...2014-05-31
  • MyBatisPlus-QueryWrapper多条件查询及修改方式

    这篇文章主要介绍了MyBatisPlus-QueryWrapper多条件查询及修改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2022-06-27
  • Oracle使用like查询时对下划线的处理方法

    这篇文章主要介绍了Oracle使用like查询时对下划线的处理方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-16
  • 解决mybatis-plus 查询耗时慢的问题

    这篇文章主要介绍了解决mybatis-plus 查询耗时慢的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-04
  • C#条件语句、循环语句(if、while)

    这篇文章主要介绍了C#条件语句、循环语句(if、while)的用法,学习c#的朋友可以参考下...2020-06-25
  • MySQL中在查询结果集中得到记录行号的方法

    如果需要在查询语句返回的列中包含一列表示该条记录在整个结果集中的行号, ISO SQL:2003 标准提出的方法是提供 ROW_NUMBER() / RANK() 函数。 Oracle 中可以使用标准方法(8i版本以上),也可以使用非标准的 ROWNUM ; MS SQL...2015-03-15
  • Node实现搜索框进行模糊查询

    这篇文章主要为大家详细介绍了Node实现搜索框进行模糊查询,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-06-28
  • Element-ui 自带的两种远程搜索(模糊查询)用法讲解

    这篇文章主要介绍了Element-ui 自带的两种远程搜索(模糊查询)用法讲解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-29
  • Mybatis用注解写in查询的实现

    这篇文章主要介绍了Mybatis用注解写in查询的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-13
  • Select下拉框模糊查询功能实现代码

    这篇文章主要介绍了Select下拉框模糊查询功能实现代码的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-07-29
  • PHP+Mysql+jQuery查询和列表框选择操作实例讲解

    本文讲解如何通过ajax查询mysql数据,并将返回的数据显示在待选列表中,再通过选择最终将选项加入到已选区,可以用在许多后台管理系统中。本文列表框的操作依赖jquery插件。HTML <form id="sel_form" action="post.php" me...2015-10-23
  • Mybatis和Mybatis-Plus时间范围查询方式

    这篇文章主要介绍了Mybatis和Mybatis-Plus时间范围查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-06
  • c# 循环语句的使用方法

    这篇文章主要介绍了c# 循环语句的使用方法,文中代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下...2020-06-25
  • mysql like查询字符串示例语句

    MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式 一、SQL模式SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL...2013-10-04
  • JPA如何使用nativequery多表关联查询返回自定义实体类

    这篇文章主要介绍了JPA如何使用nativequery多表关联查询返回自定义实体类,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-11-18
  • Mysql 原生语句中save or update 的写法汇总

    背景&#8195;&#8195;在平常的开发中,经常碰到这种更新数据的场景:先判断某一数据在库表中是否存在,存在则update,不存在则insert。 如果使用Hibernate,它自带saverOrUpdate方法,用起来很方便,但如使用原生sql语句呢? &#8195;...2015-03-15
  • C#百万数据查询出现超时问题的解决方法

    这篇文章主要介绍了C#百万数据查询出现超时问题的解决方法,是非常实用的技巧,需要的朋友可以参考下...2020-06-25
  • 如何利用JavaScript编写更好的条件语句详解

    这篇文章主要给大家介绍了关于如何利用JavaScript编写更好的条件语句的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用JavaScript具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-08-10
  • postgresql的jsonb数据查询和修改的方法

    这篇文章主要介绍了postgresql的jsonb数据查询和修改的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-03