嗨,
我有
查询为空
更新数据时出错。
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