原文链接:http://zhidao.baidu.com/link?url=xTos2NFAJbGn88GOVWnlLP4U9UelhE7DQJ3POYIaa9yBOyRTwjFnnIrGICR6hxo7DvJm0nMhR3ygml2Bv4i0LK
php mysql_query语句里为什么引用变量要加单引号,为什么有时直接用变量名也可以运行通过? $result1=mysql_query("SELECT * FROM userinformation WHERE Accountname=$a"); $result1=mysql_query("SELECT * FROM userinformation WHERE Accountname=’$a‘");
确切的说,那是sql语句,与是不是php没有直接绝对关系(sql语句的一门单独的语言,用于对数据库的一些操作,Acc、sql server、mysql等数据库的sql语句基本都一样,只是每种数据库的sql语句,有少许差别)
也就是sql语句的语法
sql语句中,字段的值和字段类型要相互对应
比如:数据表中有一个字段A,他的类型是(int、bigint等)数字类型
那么: A = '12'这样写是错误的,因为数字类型字段,不能插入或者赋值字符串类型的值
而如果A字段是文本类型等字段,则文本数字都可以插入
语法中,加引号,就表示所提供的值就字符串文本类型,不加则表示是数字类型
笔者解读:
如果
数据库字段是varchar、text这些字段:
如果$a是文本类型,则$a必须加上单引号。
如果$a是数字类型,则$a不加单引号也能通过。
比如以下语句是错误的,$user都要加上单引号。
$user='qwe';
$resultset=mysql_query("select password from users where username=$user");
或者
$user=$_GET["username"];//传递过来的值是文本类型
$resultset=mysql_query("select password from users where username=$user");
以下语句则是对的。
$user=123;
$resultset=mysql_query("select password from users where username=$user");
我在数据库中创建的字段类型如下:
编写代码
$resultset=mysql_query("select password from users where username=$user"); $db_password=mysql_fetch_array($resultset);
在了$user加上单引号后
$resultset=mysql_query("select password from users where username='$user'"); $db_password=mysql_fetch_array($resultset);运行成功。