2013-09-15 4 views
-1

Я пытаюсь добавить апостроф в форму, которая затем сохраняет базу данных, однако форма не будет сохранена при добавлении апострофа.Ошибка MySQL при добавлении apostraphe в форме

Это мой код:

  <?php 

$abouttitle=$_POST[abouttitle]; 
$aboutcontent=$_POST[aboutcontent]; 
$aboutside=$_POST[aboutside]; 
$aboutsidetitle=$_POST[aboutsidetitle]; 

    $con= mysql_connect("localhost","XXX","XXX"); 
    if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

    mysql_select_db("cl49-XXX", $con); 
$result = 

$aboutcontent = mysql_real_escape_string($aboutcontent); 
$abouttitle = mysql_real_escape_string($abouttitle); 
$aboutside = mysql_real_escape_string($aboutside); 
$aboutsidetitle = mysql_real_escape_string($aboutsidetitle); 

$query = " 
UPDATE ADMIN 
SET aboutcontent='$aboutcontent', 
    abouttitle='$abouttitle', 
    aboutside='$aboutside', 
    aboutsidetitle='$aboutsidetitle' 
"); 
$result = mysql_query($query); 

, когда я добавить апостроф в форму, чтобы сохранить его в базу данных я получаю ошибку ниже

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use 
+0

Вам следует избегать ваших данных. Вы косвенным образом вводите себя в себя. Возможно, добавлена ​​еще одна одинарная цитата, и поэтому ее нет. Его нужно избегать. – Touch

+0

Вам нужно будет избежать каких-либо одиночных кавычек '' '. 'mysql_real_escape_string' будет работать, хотя вы действительно должны использовать другую библиотеку баз данных, чтобы избежать SQL-инъекции. – AlexP

+0

Возможный дубликат [Как я могу предотвратить SQL-инъекцию в PHP?] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – andrewsi

ответ

1

Да. Используйте mysql_real_escape_string перед выполнением вашего запроса:

$aboutcontent = mysql_real_escape_string($aboutcontent); 
$abouttitle = mysql_real_escape_string($abouttitle); 
$aboutside = mysql_real_escape_string($aboutside); 
$aboutsidetitle = mysql_real_escape_string($aboutsidetitle); 

После того, как вы избежали переменных, вы можете выполнить запрос:

$query = " 
UPDATE ADMIN 
SET aboutcontent='$aboutcontent', 
    abouttitle='$abouttitle', 
    aboutside='$aboutside', 
    aboutsidetitle='$aboutsidetitle' 
"; 
$result = mysql_query($query); 

Sidenote:Please, don't use mysql_* functions in new code. Они больше не поддерживаются and are officially deprecated. Узнайте о prepared statements вместо этого, и используйте PDO или MySQLi - this article поможет вам решить, какой. Если вы выберете PDO, here is a good tutorial.

+0

Я добавил этот код , См. Отредактированный вопрос. Но теперь я получаю «Ошибка сервера»? – Shane

+0

@Shane: [Включить отчет об ошибках] (http://stackoverflow.com/a/6575502/1438393) –

+0

Я добавил это, но все равно получаю 'серверную ошибку'? – Shane

1

вам нужно бежать ваш values от php используйте функцию, такую ​​как

mysqli_real_escape_string если вы используете расширение mysqli или

mysql_real_escape_string, если вы используете удлинитель mysql

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