2010-04-05 96 views
1

我想學習php/mysql。撇號在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

什麼是$現狀和$權威性? – 2010-04-05 14:09:46

+1

正在生成的錯誤是什麼? – deadkarma 2010-04-05 14:11:12

+0

這是錯誤:錯誤:您的SQL語法中有錯誤;查看與您的MySQL服務器版本相對應的手冊,以便在'\'附近使用正確的語法,這是我們在生活中真正學到的第一件事情。 – input 2010-04-05 14:14:19

回答

8

你的值是字符串,它們仍然需要SQL語句中的分隔符,即使你已經轉義了它們。

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

謝謝!工作! – input 2010-04-05 14:15:48

+0

不是「偶數」,而是**,因爲**你已經逃脫了他們。由於這個功能只是逃避分隔符 - 引號。 – 2010-04-05 15:40:13

+0

@Col。彈片不確定你的意思。我不同意*因爲*斷言,因爲即使是非轉義的字符串值仍然需要分隔符。 – 2010-04-05 15:55:07

3

字符串必須在SQL被包裹在報價:

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