Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP变量绑定到ODBC SQL UPDATE语句_Php_Sql_Odbc - Fatal编程技术网

将PHP变量绑定到ODBC SQL UPDATE语句

将PHP变量绑定到ODBC SQL UPDATE语句,php,sql,odbc,Php,Sql,Odbc,我试图在PHP中使用ODBC将参数绑定到UPDATE语句,但SQL语句失败了,我一辈子都无法找出原因。我曾尝试过谷歌搜索,但与MySQLi和PDO相比,关于在PHP中使用ODBC的信息似乎很少 我发现的大多数参数绑定示例都使用SELECT语句,但据我所知,这不会有什么区别。我找到的最接近的答案是。就我所知,他们正在做我正在做的事情,但我不断地犯错误。这是我的密码: $updQuery = "UPDATE Demographic SET dmg_FirstName=? WHERE dmg_ID=?

我试图在PHP中使用ODBC将参数绑定到UPDATE语句,但SQL语句失败了,我一辈子都无法找出原因。我曾尝试过谷歌搜索,但与MySQLi和PDO相比,关于在PHP中使用ODBC的信息似乎很少

我发现的大多数参数绑定示例都使用SELECT语句,但据我所知,这不会有什么区别。我找到的最接近的答案是。就我所知,他们正在做我正在做的事情,但我不断地犯错误。这是我的密码:

$updQuery = "UPDATE Demographic SET dmg_FirstName=? WHERE dmg_ID=?";
$update = odbc_prepare($connect, $updQuery);

$fname = $_POST['firstname'];
$pID = 145100007;
$updResult = odbc_execute($update, array($fname, $pID)) or die (odbc_errormsg());
以下是我在上述代码中不断遇到的错误:

Warning: odbc_execute(): SQL error: [Microsoft][ODBC Driver Manager] SQL data type out of range, SQL state S1004 in SQLBindParameter in C:\xampp\htdocs\work\ajaxdd.php on line 44

当我删除参数绑定时,代码会起作用,因此如果最坏的情况发生,我可以尝试尽可能地清理数据,但这显然不是最好的做法。

这可能意味着您试图插入一个高于整数列允许的ID。首先尝试验证是否是这种情况。dmg\U ID的类型是什么?145100007是一个相当高的数字,因此我怀疑这可能是罪魁祸首。

查找该错误消息时,看起来这可能是您正在使用的ODBC驱动程序中的错误(看起来PHP正在使用的数据类型标识符被拒绝,而不是您的实际值)。ODBC准备的语句在这方面非常有限,因为所有内容都绑定为字符串。理想情况下,您应该为特定的RDBMS使用一个PHP API/驱动程序-这是不可能的吗?不幸的是,情况似乎确实如此。我必须连接到一个4D SQL server,它确实有一个PHP驱动程序,但它已经过时多年了,似乎已经被放弃了,而且我实际上找不到一个可以与最新的PHP版本一起使用的驱动程序。你能试用PDO ODBC吗?我刚刚检查了这个操作的PHP源代码,看起来它一定是驱动程序的错误。它不喜欢的数据被提取到
sqltype
变量中,并在下面的10行左右使用-但它从未在任何地方手动重新分配,值来自驱动程序,并且未经修改就发送回驱动程序。如果没有本机驱动程序,使用ODBC可能是最好的选择,但请尝试查找ODBC驱动程序的更新版本。参考了ODBC驱动程序中的几个错误修复,其中一个与PHP特别相关(虽然看起来不像是同一个问题,但如果您有最新的驱动程序,通过ODBC从PHP使用4D至少应该可以工作),感谢您的响应,但不幸的是,这似乎不是罪魁祸首。这是一个长整型,所以长度不应该是一个问题。作为一个测试,虽然我删除了ID并让它由另一个字符串字段更新,但得到了相同的错误。