msqli запрос - ошибка синтаксиса mysqli_sql_exception - PullRequest
0 голосов
/ 13 марта 2012

Привет всем, у меня есть следующий запрос, который выполняется из phpmyadmin, не доставляет мне проблем, но при использовании расширения mysqli это кошмар, но только внутри функции с переменными.

$reference_field = 'attribute';
$value = $attribute; // it actual worths 'Size,S Small ,M Medium ,L Large ,XXL 2Xl XX-Large ,XXXL 3Xl XXX-Large ';
$original_value = md5($value);

 $SQL = " UPDATE jos_jf_content As j  SET j.value = '%s' ,  
j.original_value = '%s' WHERE j.reference_id  =%d  
AND j.reference_field  ='%s'  ";
echo $a=sprintf($SQL,$value,$original_value, $prodId,'attribute');
$Myconnector->real_query( $a   );

это дает мне

mysqli_sql_exception: You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version 
for the right syntax to use near " at line 3  

Выполнение печати запроса, кажется, все в порядке, и выполнение его самостоятельно в одном файле php для отладки работает нормально, дает мне эту проблему только тогда, когда внутри функции

UPDATE jos_jf_content As j 
SET j.value = 'Size,S Small ,M Medium ,L Large ,XXL 2Xl XX-Large ' , 
j.original_value = 'f8508eb38ed3e26e6f3814a253b12c9a' , j.modified = 1331632841 
WHERE j.reference_id =1787 AND j.reference_field ='attribute'

1 Ответ

0 голосов
/ 13 марта 2012

Мое обоснованное предположение, что у вас есть что-то вроде этого:

$bar = 'Hello, World!';
$sql = sprintf("SELECT * FROM foo WHERE bar='%s'", $bar);

... и преобразовал его в:

function get_sql(){
    return sprintf("SELECT * FROM foo WHERE bar='%s'", $bar);
}
$bar = 'Hello, World!';
$sql = get_sql();

Основные проблемы:

  1. Вы не настроили PHP для отображения уведомлений.
  2. Вы игнорируете переменную область.

Быстрое исправление:

ini_set('display_errors', TRUE);
error_reporting(E_ALL | E_STRICT);

function get_sql($bar){
    return sprintf("SELECT * FROM foo WHERE bar='%s'", $bar);
}
$bar = 'Hello, World!';
$sql = get_sql($bar);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...