проблема с кавычками и вставкой MySQL в - PullRequest
2 голосов
/ 14 апреля 2011

У меня проблемы с вставкой переменной $ _POST формы в MySQL!Я знаю, что это проблема с одинарными кавычками, но просто не могу ее решить.

Код:

$naziv_db = $_POST["naziv"];
$naziv_db = mysql_real_escape_string($naziv_db);

$query = "INSERT INTO items (title) VALUES ('$naziv_db')";

$stmt = mysql_query($query) or die("MySQL error: " . mysql_error());

Если я введу значение, содержащее ", оно вставится правильно, но если оно содержит ' тогда появляется ошибка!

Например, если мой ввод Milky's

error is: MySQL error: 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 's

Если мой ввод "Milkys" все идет хорошо ...


Я здесь новичок, поэтому не могу опубликовать ответ на свой вопрос, поэтому мне нужно отредактировать!

Решение Кристиана было правильным!

Я изменил код:

$query = "INSERT INTO items (title) VALUES ('$naziv_db')";

до:

$query = 'INSERT INTO `items` (`title`) VALUES ("'.$naziv_db.'")';

и теперь он принимает и "и" без ошибок!

Спасибо, ребята, вы лучшие: D

Ответы [ 3 ]

2 голосов
/ 14 апреля 2011

Чтобы полностью этого избежать, вам лучше всего использовать подготовленное утверждение.

В ответе на есть хороший пример .

.случае, вы получите:

$db = new mysqli("host","user","pw","database");
$stmt = $db->prepare("INSERT INTO items (title) VALUES (?)");
$stmt->bind_param('s', $_POST["naziv"]);
$stmt->execute();
$stmt->close();
2 голосов
/ 14 апреля 2011

Совершенно невозможно получить такую ​​ошибку из вашего кода.
Скорее всего, где-то есть опечатка.
Возможно, вы экранировали неверную переменную или это другой запрос, выдающий эту ошибку

Вы уверены, что разместили код, который на самом деле используете?это точный код или какой-то набросок?

замените строку mysql_query на эту

mysql_query($query) or trigger_error(mysql_error()." ".$sql);

и вставьте ее вывод, пожалуйста.

или даже изменить весь код:

ini_set('display_errors',1);
error_reporting(E_ALL);

$naziv_db = $_POST["naziv"];
$naziv_db = mysql_real_escape_string($naziv_db);
$query = "INSERT INTO items (title) VALUES ('$naziv_db')";

var_dump($_POST["naziv"]);
echo "<br>\n";
var_dump($naziv_db);
echo "<br>\n";
var_dump($query);
echo "<br>\n";

mysql_query($query) or trigger_error(mysql_error()." ".$sql);

это называется «отладка» и обычно помогает.

0 голосов
/ 14 апреля 2011

Попробуйте addlashes - это сделано для анализа строк в дружественном для базы данных контенте.

...