您好,
我有
查询为空
错误,更新数据时。
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());
}
我认为查询存在问题,任何人都可以确定问题出在哪里。
亲切的问候
答案 0 :(得分: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());
}
答案 1 :(得分: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