Я преобразование старого сценария быть уступчивым с MySQLi и побежал к проблеме ...запрос не работает при использовании mysqli_real_escape_string
$link = mysqli_connect("localhost", "user", "password", "database");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$myQuery = "INSERT INTO table (name, description) VALUES ('$name', '$description')";
if (!mysqli_query($link, $myQuery)) {
printf('Error');
} else {
printf('Success');
}
mysqli_close($link);
Это работает отлично, без ошибок. Но когда я добавляю mysqli_real_escape_string(), я получаю ошибку ...
$link = mysqli_connect("localhost", "user", "password", "database");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$myQuery = "INSERT INTO table (name, description) VALUES ('$name', '$description')";
$myQuery = mysqli_real_escape_string($link, $myQuery);
if (!mysqli_query($link, $myQuery)) {
printf('Error');
} else {
printf('Success');
}
mysqli_close($link);
Это возвращает ошибку:
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 '\'TestName\', \'TestDescription\' at line 1
я упускаю что-то простое? Цитаты?
'mysqli_real_escape_string' предназначен для экранирования строковых значений, а не всего запроса SQL. - Вместо этого прочитайте ссылку на параметр. И после того, как вы выяснили, почему это больше усилий с mysqli, просто переключитесь на PDO. – mario
@mario Просто быстрое примечание, если вы, возможно, видели мой ответ после того, как разместили свой комментарий.Это не было основано на том, что вы опубликовали в своем комментарии, поскольку я уже печатал его. Это было чисто случайным. –
@James. Я не уверен, что вы видели мой ответ или нет, но я сделал редактирование, и вам нужно будет перезагрузить его, чтобы посмотреть, что я изменил. –