4

你好,

我有

查询为空

更新数据时出错。

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1"))
{
   $updateSQL = sprintf("UPDATE client,release SET client.`client_name`=%s, release.`client_name`=%s WHERE client.`client_id`=%s AND release.`client_id`=%s", GetSQLValueString($_POST['newcust'], "text"), GetSQLValueString($_POST['select'], "int"));
   mysql_select_db($database_trackntrace, $trackntrace);
   $Result1 = mysql_query($updateSQL, $trackntrace) or die(mysql_error());
}

我认为查询有问题,请任何人指出问题所在。

亲切的问候

4

2 回答 2

4

问题出在 sprintf 函数中。你告诉 sprintf 你将传递 4 个字符串给它,但你只传递了 2 个。

因为你只传递了 2 个参数,而且它需要 4 个,所以它会返回 false。

尝试在您的代码上方添加:

error_reporting(E_ALL);
ini_set('display_errors', '1');

这是使用上述设置时应该得到的错误:

Warning: sprintf() [<a href='function.sprintf'>function.sprintf</a>]: Too few arguments

你想改变它来解决这个问题:

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1"))
{
   $updateSQL = sprintf("UPDATE client,release SET client.`client_name`=%s, release.`client_name`=%s WHERE client.`client_id`=%s AND release.`client_id`=%s", GetSQLValueString($_POST['newcust'], "text"), GetSQLValueString($_POST['newcust'], "text"), GetSQLValueString($_POST['select'], "int"), GetSQLValueString($_POST['select'], "int"));
   mysql_select_db($database_trackntrace, $trackntrace);
   $Result1 = mysql_query($updateSQL, $trackntrace) or die(mysql_error());
}
于 2013-09-18T11:52:47.703 回答
2

发布是保留字,使用反引号。

UPDATE client,`release` SET client.`client_name`=%s, `release`.`client_name`=%s 
WHERE client.`client_id`=%s AND `release`.`client_id`=%s",     GetSQLValueString($_POST['newcust'], "text"), GetSQLValueString($_POST['select'], "int"));

http://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-reservedwords-5-5.html

于 2013-09-18T11:44:17.870 回答