在一个更新语句中更新多个 MySQL 表时出错


Error in updating multiple MySQL tables in one update statement

嗨,

我有

查询为空

更新数据时出错。

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());
}

我认为查询有问题,任何人都可以确定问题出在哪里。

亲切问候

问题出在 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());
}

Release 是一个保留字,使用反引号。

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