2012-05-04 168 views
0

更值得注意的是,爲什麼我的mysql_query()函數在下面的代碼段中不起作用?爲什麼MySQL查詢調用失敗?

<?php 

$name = $_POST["name"]; 
$email = $_POST["email"]; 
$pw = $_POST["password"]; 
$cpw = $_POST["cpassword"]; 

if ($name && $email && $pw) 
{ 
    mysql_connect("localhost", "root", "") or die("We couldn't connect!"); 
    mysql_select_db("testsite"); 

    mysql_query("INSERT INTO users(name, email, password) VALUES('$name', '$email', '$pw'") or die(mysql_error()); 

    $registered = mysql_affected_rows(); 

    echo "$registered was inserted"; 
} 
else 
{ 
    echo "At least one value is empty"; 
} 

mysql_close(); 

?> 

返回的錯誤是這樣的:

您的SQL語法錯誤;檢查手冊中 對應於你的MySQL服務器版本正確的語法使用 「」附近的1號線

目錄與所有相關文件都位於here。所有這些文件都位於xampp/htdocs /下的testsite目錄中。我在瀏覽器中運行form.php之前安裝了xampp並運行它。我在運行form.php之前製作了「testsite」MySQL數據庫和「users」表。

The database and table exist.

然而,當我輸入正確的所有信息,mysql_affected_rows()函數返回-1。這讓我覺得數據庫沒有正確修改。預先感謝您的反饋。

回答

2

你錯過了關閉括號在Values條款結束。

mysql_query("INSERT INTO `users`(`name`, `email`, `password`) VALUES('$name', '$email', '$pw')") or die(mysql_error()); 
3

改變這種

VALUES('$name', '$email', '$pw'") 

VALUES('$name', '$email', '$pw')" 

你缺少一個支架

+0

你錯過了'mysql_query'調用的右括號。 – jprofitt

2

如果您決定在POST數據中發送單引號或雙引號,我還想預先警告您將收到的另一個潛在錯誤。你總是想盡你所能來防止mysql注入,你可以通過使用下面的代碼來實現一個巨大的飛躍。

$name = mysql_real_escape_string($_POST["name"]); 
$email = mysql_real_escape_string($_POST["email"]); 
$pw = mysql_real_escape_string($_POST["password"]); 
$cpw = mysql_real_escape_string($_POST["cpassword"]); 

請知道,我只是想給你任何頭痛保存在未來,與別人誰可能比真誠用心少。

+0

謝謝你的擡頭。 – stanigator