直接执行SQL;没有游标。,SQLExecDirect中的SQL状态01000

时间:2014-01-09 08:06:24

标签: php sql-server-2008 codeigniter

我使用驱动程序odbc驱动程序2011使用WAMP服务器PHP 5.3.4和sql server 2008 r2连接 当我执行此查询时,我得到了正确的答案,

SELECT [password],[username] FROM [customer]

但是有错误执行下面的查询时,我在sqlserver中检查了相同的查询,它给了我结果corrcetly

SELECT [password],[username] FROM customer Where $name=[password] and $pass=[username]

这就是我得到的错误

  

遇到PHP错误

     

严重性:警告

     

消息:odbc_exec():SQL错误:[Microsoft] [SQL的ODBC驱动程序11   服务器] [SQL Server]直接执行SQL;没有游标。,SQL状态01000   在SQLExecDirect中

     

文件名:models / general_account.php

     

行号:18

更新

function login($name,$pass)
{
var_dump($name);
var_dump($pass);        
$this->load->database();
$conn=odbc_connect('odbcconnection','sa','sa') or die ('error');
$sql='SELECT [password],[username] FROM customer Where $name=[password] and $pass=[username]';          
$rs=odbc_exec($conn,$sql) or die('exe error');            
odbc_close($conn); 
}    

先谢谢。

2 个答案:

答案 0 :(得分:2)

这是我自己犯的一个愚蠢的错误,

$sql='SELECT [password],[username] FROM customer Where $name=[password] and $pass=[username]';  

我只打印存储在$ sql变量中的sql查询并在MSSQL Server上运行该查询, 查询就像这样,

SELECT [password],[username] FROM customer Where asd=[password] and asd123=[username]

但是在sql server中我们需要在引号中给出字符串

$sql="SELECT [password],[username] FROM customer Where '$name'=[password] and '$pass'=[username]";

它很好......

答案 1 :(得分:0)

我遇到了同样的错误,因为我安装了SQl Server 2014数据库所需的新的SQL Server版本11 odbc驱动程序,但SQL Server 2008 r2上还有另一个数据库仍需要较旧的SQL Server驱动程序。