码迷,mamicode.com
首页 > 数据库 > 详细

[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]列名 'user1' 无效

时间:2019-06-07 00:48:37      阅读:532      评论:0      收藏:0      [点我收藏+]

标签:color   类型   class   无效   jpg   原创   err   博文   文章   

唉,还是自己对php执行sql语句运用不熟练。。。。

我的错误代码是这样的,(解决办法在最后)

$re=sqlsrv_query($conn, "select * from visitor where username = ".$name);
$row = sqlsrv_fetch_array($re);
if (is_null($re) || !$re) {
        print_r(sqlsrv_errors());
}

一开始只有前两行,然后报错,通过 sqlsrv_errors() 输出错误原因,进行排查,因为此函数结果为array,所以用 print_r() 输出,然后显示()

    [0] => Array
        (
            [0] => 42S22
            [SQLSTATE] => 42S22
            [1] => 207
            [code] => 207
            [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]列名 ‘user1‘ 无效。
            [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]列名 ‘user1‘ 无效。
        )

注意,$name的值为$_SESSION[‘name‘]="user1",是个字符串类型吧

然后,我的user1明明是变量,为什么报错是列名呢,我的表里当然没有叫“user1”的列。

然后,差点被百度的结果蒙蔽了双眼。。。终于看到一个人说写一个不加where的查询语句看看

然后,没问题,嗯, $sql = "select * from visitor where username = ‘user1‘"; 

这样也没错,所以,,,,难道是少了user1的两边的单引号?

所以 $sql = "select * from visitor where username = ‘".$name."‘"; 

终于不报错了!!!

技术图片

为什么是这样呢,一开始我就是以为$name是字符串,然后sql语句的条件where *** = 字符串,没啥问题,

写着写着博客才明白了(写这篇文章之初我还不知道为啥。。)

$sql = " XXXXXXXXXX ".$name 相当于$sql = "XXXXXX  user1",这个user1跟sql语句融为一体,不分你我。。。所以这个变量还是需要用单引号括起来区分一下的

$sql="select * from visitor where username = ‘".$name."‘";//注意单引号把变量括起来
$re=sqlsrv_query($conn, $sql);

好了问题解决,数据库大作业真烦人,,而且,我当初为啥给自己定的方向是php+sql server.................(主要后悔用sql server了)

自作孽不可活

此博文系作者原创,转载请注明来源~

[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]列名 'user1' 无效

标签:color   类型   class   无效   jpg   原创   err   博文   文章   

原文地址:https://www.cnblogs.com/zcl843264327/p/10987278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!