2010-04-05 4 views
1

Я пытаюсь изучить php/mysql.apostrophe in mysql/php

Вставка данных в mysql отлично работает, но вставка тех, у кого есть апостроф, вызывает ошибку. Я попытался использовать mysql_real_escape_string, но это не работает.

был бы признателен за любую помощь.


<?php 
include 'config.php'; 

echo "Connected <br />"; 



$auth = $_POST['author']; 
$quo = $_POST['quote']; 

$author = mysql_real_escape_string($auth); 
$quote = mysql_real_escape_string($quo); 


//************************** 



//inserting data 
$sql="INSERT INTO Quotes (vauthor, cquotes) 
VALUES ($author, $quote)"; 

if (!mysql_query($sql,$conn)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
echo "1 record added"; 

...

, что я делаю неправильно?

+0

Что находится в $ кво и $ AUTH? –

+1

Какая ошибка генерируется? – deadkarma

+0

это ошибка: Ошибка: У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, используемого рядом с «первым», которое мы действительно изучаем в жизни. – input

ответ

8

Ваши значения являются строками, они все еще нуждаются в разделителях в инструкции SQL, даже после того, как вы сбежали от них.

//inserting data 
$sql="INSERT INTO Quotes (vauthor, cquotes) 
VALUES ('$author', '$quote')"; 
+0

спасибо! это сработало! – input

+0

Не «даже», а ** потому что ** ты убежал от них. Поскольку эта функция делает не более, чем экранирование разделителей - кавычки. –

+0

@Col. Шрапнель не уверена, что вы имеете в виду. Я не согласен с утверждением * потому что *, поскольку даже неэкранированные строковые значения все равно нуждаются в разделителях. –

3

Строка должна быть обернута в кавычках в SQL:

$sql="INSERT INTO Quotes (vauthor, cquotes) 
VALUES ('$author', '$quote')";