2012-05-25 84 views
-2

當用戶在我的網站上註冊時,他們需要輸入個人信息。輸入的詳細信息將被添加到我的數據庫中的personaldetails表中。我有下面的代碼,但它不起作用,我不明白爲什麼。誰能幫忙?我得到錯誤:查詢是空的在數據庫中插入發佈的詳細信息

$myusername=$_POST['username']; 
    $mypassword=$_SESSION['mypassword']; 
    $firstname = $_POST['firstname']; 
    $surname = $_POST['surname']; 
    $dob = $_POST['dob']; 
    $totalwins = $_POST['totalwins']; 
    $totalloses = $_POST['totalloses']; 
    $email = $_POST['email']; 
    $country = $_POST['country']; 
    $info = $_POST['info']; 

    // Connect to server and select database. 
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB"); 

    $queryreg = mysql_query(" 

       INSERT INTO $tbl_name VALUES('','','$myusername','$mypassword''$firstname','$surname','$totalwins','$totalloses','$email','$country','$info','$dob') 
     "); 

if (!mysql_query($sql)) 
     { 
    die('Error: ' . mysql_error()); 
     } 
     else { 
     echo "<br><br>Your details have been successfully updated. Go back to the     personal details page to view your updated information."; 
    } 
+0

我們沒有魔法球..這是錯誤? – dynamic

+2

請停止使用古代mysql_ *函數編寫新代碼。他們不再被維護,社區已經開始了貶值過程。相反,您應該瞭解準備好的聲明並使用PDO或MySQLi。 (你現在的代碼很容易被sql注入) – Bono

+2

請停止使用古老的'mysql_ *'函數編寫新代碼。他們不再被維護,社區已經開始[棄用流程](http://goo.gl/KJveJ)。相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定,[本文](http://goo.gl/3gqF9)將有助於選擇。如果你關心學習,[這裏是一個很好的PDO相關教程](http://goo.gl/vFWnC)。 – vascowhite

回答

0

首先,您使用代碼公開了SQL注入。請準備並逃脫你的發佈數據!這對防止SQL注入攻擊非常重要。請仔細閱讀。

然後,出現錯誤,因爲這

if (!mysql_query($sql)) 
    { 
die('Error: ' . mysql_error()); 
    } 
    else { 
    echo "<br><br>Your details have been successfully updated. Go back to the     personal details page to view your updated information."; 
} 

你似乎並不有一個變量名爲$ SQL,並且,您正在執行兩個查詢的!

請執行下列操作併發布您的反饋

$sql = "INSERT INTO $tbl_name VALUES('','','$myusername','$mypassword''$firstname','$surname','$totalwins','$totalloses','$email','$country','$info','$dob')"; 

if (!mysql_query($sql)) 
    { 
die('Error: ' . mysql_error()); 
    } 
    else { 
    echo "<br><br>Your details have been successfully updated. Go back to the     personal details page to view your updated information."; 
} 
+0

SQL =的mysql_query(」 \t \t \t \t \t \t INSERT INTO $ tbl_name(字段3,字段4,字段5,字段6,字段7,字段8,字段9,字段10,field11,field12,field13)VALUES( '', '',」 $ myusername','$ mypassword','$ firstname','$ surname','$ totalwins','$ totalloses','$ email','$ country','$ info','$ dob') \t \t \t「);如果(!mysql_query($ sql)) \t die('Error:'。mysql_error()); } – user1368371

+0

還是一樣的錯誤?對不起,我不熟悉這些評論 – user1368371

+0

與反饋一樣,我的意思是腳本產生的錯誤或結果。 這對我來說幫助不大。不過,如果您使用的是自動遞增的主鍵,則應在您不想存儲值的字段上傳遞一個「空」值。 順便說一句,你的專欄真的名爲「field1,field2等......」?這是一個糟糕的編程習慣。你應該相應地命名你的表列。 無論如何,請發佈腳本結果 –

2

如果您使用的主要領域與自動增量應指定字段名:

$queryreg = mysql_query("INSERT INTO $tbl_name (field1,field2,field3 ecc) VALUES(...)"); 

而且你的代碼是vulernable注射,USO PDO

0

查詢是空的,因爲您沒有任何賦值到$ sql的任何賦值行

if (!mysql_query($sql)) 

要解決,必須給它喜歡:

$sql = "update $tbl_name set ..."; 
    if (!mysql_query($sql)) 
0

有跡象表明,嚇唬我你的代碼不少東西...

更改到以下(你有$mypassword$sql WASN後缺少逗號沒有設置正確)。

$sql = "INSERT INTO $tbl_name ([list columns here besides autoincrement ]) 
    VALUES 
    ('', '$myusername', '$mypassword', '$firstname', '$surname', 
    '$totalwins', '$totalloses', '$email', '$country', '$info', '$dob')"); 

if (!mysql_query($sql)) { 
+0

無論誰投票這些答案需要提供一些解釋。否則很難改善答案。 – kevin628

+0

這現在是我收到的錯誤 – user1368371

+0

錯誤:列數不匹配第1行的值計數 – user1368371

相關問題