2012-04-17 2 views
0

Я получаю сообщение об ошибке с запросом похожее на это, но я не понял, проблема:PHP, mysql_real_escape_string и запросов MySQL

$str = "rob's"; 
... 
$query ="INSERT INTO tableName (name) VALUES (mysql_real_escape_string('$str')"; 

Edit:

Я извиняюсь. Я сделал ошибку, уменьшив мой код; это ближе к тому, что я, что дает ошибку:

$str = "rob's"; 
... 
$query ="INSERT INTO tableName (name) VALUES (('".mysql_real_escape_string($str)."')"; 
+1

Лучше отказаться от устаревших функций 'mysql_' и переключиться на библиотеку, которая предлагает параметризованные запросы, например. PDO. – webbiedave

+0

У вас есть дополнительная скобка здесь. VALUES (('". Mysql_real_escape_string ($ str)."') 'Должно быть как' VALUES ('".mysql_real_escape_string ($ str)."') '. Не так ли? – Lion

+0

«Я получаю сообщение об ошибке» - * что сообщение об ошибке говорит *? Это очень важная информация, не так ли? – JJJ

ответ

4

mysql_real_escape_string() является PHP, MySQL не. Вы должны получить его из цитат

$query ="INSERT INTO tableName (name) VALUES ('".mysql_real_escape_string($str)."')"; 

Кроме того, $ ул является строкой, поэтому в MySQL она должна быть окружена qoutes тоже, я добавил их. Вы уже имели это в месте, а потому, что функция необходима, чтобы выйти из цитат, они должны были быть перемещены

1
$query ="INSERT INTO tableName (name) VALUES ('" . mysql_real_escape_string($str) . "'"; 
+1

Ваша обработка $ str как строка –

+0

право, спасибо :) – MarcinJuraszek

1

mysql_real_escape_string() является функцией PHP. Поэтому в строке запроса MySQL вы должны передать его как переменную:

$query ="INSERT INTO tableName (name) VALUES ('" . mysql_real_escape_string($str) . "')"; 

Подробнее здесь: http://php.net/manual/en/function.mysql-real-escape-string.php

0

Я рекомендовал бы выполнять функцию mysql_real_escape_string() перед запросом вставки. Есть известные проблемы с попыткой разделить персонажи во время запроса запроса. Код ниже я использовал много раз раньше и знаю, что он работает. Это также помогло бы, если бы вы дали нам ошибку, которую вы получали, используете ли вы расширение mysql, такое как mysql * i *, и реальный код, который вы используете. «Я допустил ошибку, уменьшая мой код, это ближе к тому, что у меня есть, что дает ошибку», на самом деле не помогает уменьшить проблему, с которой вы столкнулись, поскольку вы, возможно, удалили часть, которая выдает ошибку, код. Тем не менее, использование того, что у меня ниже, должно работать для вас просто отлично.

$str = $_POST['name']; 
mysql_real_escape_string($str); 
$query = "INSERT INTO tableName (name) VALUES (".$str.")"; 
mysql_query($query); 
Смежные вопросы