2013-09-18 4 views
4

Привет,Ошибка при обновлении нескольких таблиц MySQL в один обновление заявления

Я имею

запрос был пуст

ошибка при обновлении данных.

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

Я думаю, что существует проблема с запросом, может ли кто-нибудь определить, где проблема.

С наилучшими пожеланиями

+1

Что делает 'var_dump ($ updateSQL);' output? Вероятно, это не так, как вы думаете. –

ответ

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

Я исправил его, но его по-прежнему не обновляет столбец в обеих таблицах. '$ updateSQL = sprintf (" UPDATE 'client',' release' SET 'client'.'client_name' =% s,' release'.'client_name' =% s WHERE 'release'.'client_name' =% s AND 'client'.'client_id' =% s", GetSQLValueString ($ _ POST ['newcust'], "text"), GetSQLValueString ($ _ POST ['newcust'], "text"), GetSQLValueString ($ _ POST ['newcust' ], «текст»), GetSQLValueString ($ _ POST ['select'], "int")); ' – MOZ

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

+0

по-прежнему такая же ошибка «Запрос был пуст» – MOZ

+0

Используйте обратные ссылки на имена столбцов. – Mihai

+0

.... Тем не менее! – MOZ

Смежные вопросы