2012-09-30 59 views
0

當我執行這個查詢時,它返回false,這意味着查詢是錯誤的。你能弄清楚爲什麼?SQL插入和提交

$string1 = 'wee'; 
$string2 = 'wee'; 
$string3 = 'wee'; 
$string4 = 'wee'; 

if (isset($_POST['submit'])) { 

    $query = "INSERT INTO data (book, title, content, author) 
       VALUES ($string1, $string2, $string3, $string4)";   
    mysql_query($query, $con);  
} 

然而,當我把東西是像下面,它返回true,並正確插入:

$query = "INSERT into data (book, title, content, author) 
      VALUES ('wee', 'wee', 'wee', 'wee')"; 

而另一個問題:當我提交,似乎該查詢返回時兩次這意味着兩個記錄與一個查詢。有人知道嗎?

如果您需要更多信息,只需詢問。

在此先感謝。

+1

我強烈建議不要使用舊的'mysql_xx()'函數。他們被認爲是過時的,甚至PHP手冊說停止使用它們。相反,您應該使用'mysqli_xx()'函數或PDO庫。使用這兩種方法之一,您可以使用參數化查詢,這將使您的SQL更加安全。 – Spudley

回答

0

您的字段數據類型是字符串或varchar,因此您需要在其周圍放置「'或」「。

更改您的查詢,如下

$query = "INSERT into data (book, title, content, author)VALUES ('".$string1."', '".$string2."',  
     '".$string3."', '".$string4."')"; 

要解決提交問題,請發表您的HTML代碼

+0

做到了它的工作.thanks.hmmm和數字或日期它會是什麼?

」>

+0

對於數字,不需要在其周圍放置「'或」「。到目前爲止,它有所不同。這裏是文章,告訴你更多關於日期.http://www.ntchosting.com/mysql/insert-date.html – GBD

+0

非常感謝你 –

1

雖然這個問題似乎回答,你不應該在查詢中直接使用用戶輸入這打開孔對於像SQL注入這樣的漏洞(和那是壞的mmmay)

如果你看看php.net上的mysql頁面(mysql_query),頁面上說建議你使用像PDO這樣的抽象層(pdo-mysql

使用PDO將允許您將參數綁定到您的SQL查詢,以繞過在查詢中使用用戶輸入的安全隱患。

如果您沒有將參數綁定到您的查詢,您會有一段糟糕的時間。