2012-10-09 138 views
0

查詢正在運行,但未發送到SQL服務器。 我目前的註冊腳本。通過php表格更新SQL表格

$link = mysqli_connect("$server", "$user", "$pass", "$webdb"); 
$username = mysqli_real_escape_string($link, (string) $_POST['username']); 
$displayname = mysqli_real_escape_string($link, (string) $_POST['display_name']); 
$email = mysqli_real_escape_string($link, (string) $_POST['email']); 
$password = sha1((string) $_POST['password']); 
$query="INSERT INTO user (`username`, `nicename`, `email`, `password`) 
VALUES ('$username', '$displayname', '$email', '$password', '1')"; 
mysqli_query($link, $query); 
mysqli_close($link); 
echo $query; 
?> 

輸出我從收到的查詢:

INSERT INTO user (username, nicename, email, password) VALUES ('orion5814', 'Orion5814', '[email protected]', '72f2ac484bee398758e769530dd56228d905884d', '1') 

我檢查了我所有的鏈接變量,他們都設置正確,只要已具備了正確的信息,所以我不不知道還有什麼可以從這裏出發。抱歉有這些問題;你可以在doxramos.org上查看它,如果你認爲它會有所幫助的話。

回答

2

查詢有瑕疵。您的名稱爲4列(username, nicename, email, password),但列出了5個值('orion5814','Orion5814','[email protected]','72f2ac484bee398758e769530dd56228d905884d','1') 如果刪除最後一個值,則查詢應該可以工作。

此外,您可以通過使用面向對象的接口,簡化您的代碼庫MySQLi像這樣:

$username = $link->real_escape_string($_POST['username']); 

$link->query($query); 
$link->close(); 

你也不需要明確地投下變量作爲字符串因爲如果您的代碼需要,它會自動完成。

+0

你是對的,我也很欣賞簡化字符串的輸入。在我要做的事情清單上;非常感謝 –

1

在您的查詢中發現一個錯誤。 用mysqli_error()捕獲錯誤;

2

由於jordi12100建議您在連接到數據庫或執行查詢時檢查錯誤是一件好事。

你可以這樣說:

$link = mysqli_connect("$server", "$user", "$pass", "$webdb") or die("Error:" . mysqli_connect_error()); 

mysqli_query($link, $query) or die ("Error:" . mysqli_error($link)); 

這可以給你的想法你做錯了什麼。 希望這有助於。

+0

重大幫助;我已經習慣了mysqli,並且有些東西給了我錯誤號碼,這將大大幫助你。 –