mysql_query返回false原因

原文链接: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");


我在数据库中创建的字段类型如下:

mysql_query返回false原因_第1张图片

编写代码

 $resultset=mysql_query("select password from users where username=$user");
   $db_password=mysql_fetch_array($resultset);

出现如下错误

mysql_query返回false原因_第2张图片

在了$user加上单引号后

 $resultset=mysql_query("select password from users where username='$user'");
   $db_password=mysql_fetch_array($resultset);
运行成功。

你可能感兴趣的:(mysql_query返回false原因)