zoukankan      html  css  js  c++  java
  • [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]列名 'user1' 无效

    唉,还是自己对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了)

    自作孽不可活

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

  • 相关阅读:
    删掉从svn 文件夹里复制出来所带的信息(去掉.svn文件夹)
    AS3 loader
    as3鼠标事件
    linux 随机数
    AS3资源处理
    字符串合并
    linux time.h
    fat32转ntfs
    linux 杂项
    oracle——创建数据表
  • 原文地址:https://www.cnblogs.com/zcl843264327/p/10987278.html
Copyright © 2011-2022 走看看