2010-05-21 107 views
0

我試圖插入數據到MySQL中的表。我發現/修改了w3Schools的一些代碼,仍然無法使它工作。繼承人我到目前爲止:PHP MySQL插入數據

<?php 
$rusername=$_POST['username']; 
$rname=$_POST['name']; 
$remail=$_POST['emailadr']; 
$rpassword=$_POST['pass']; 
$rconfirmpassword=$_POST['cpass']; 

if ($rpassword==$rconfirmpassword) { 

    $con = mysql_connect("host","user","password"); 
    if (!$con) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 
     mysql_select_db("mydbname ", $con); 
    } 

    mysql_query("INSERT INTO members (id, username, password) 
    VALUES ('4', $rusername, $rpassword)"); 


?> 

我錯了什麼?我的理解是「成員」是表格的名稱。如果有人知道什麼是錯的,我很感激幫助。

感謝

+0

爲什麼要添加4作爲id?只需將'id'設置爲自動遞增,您就不必再處理它了。 此外,id應該是一個整數,所以不需要使用引號 – nico 2010-05-22 00:04:47

+2

這是一個SQL注入漏洞。請使用參數化查詢(請參閱PDO的PHP文檔:http://php.net/pdo),或使用像mysql_real_escape_string這樣的函數至少使用escape輸入。 – eyelidlessness 2010-05-22 00:12:34

+0

我只是放入4來測試它。現在它生成一個隨機數。是的,我聽說過SQL注入,我使用mysql_real_escape_string進行登錄。儘管如此,我還沒有將它添加到創建帳戶。 – nosedive25 2010-05-22 00:24:54

回答

4

查詢結果從你的代碼是:

INSERT INTO members (id, username, password) VALUES ('4', rusername, rpassword) 

注意,在SQL字符串必須由'包圍。

所以更新的代碼如下:

mysql_query("INSERT INTO members (id, username, password) 
      VALUES ('4', '$rusername', '$rpassword')"); 
+0

我更新了它,但是我仍然沒有在db中看到新的列表。 – nosedive25 2010-05-22 00:03:10

+0

請發佈您的數據庫架構 – Amirshk 2010-05-22 00:11:11

+0

我知道它的幫助謝謝你的幫助 – nosedive25 2010-05-22 00:25:20

0

而且你的數據庫的名字嗎?

mysql_select_db("mydbname ", $con); 

即使它被稱爲mydbname那裏面有一個奇怪的空間,焦炭..

你也可以做

mysql_query("use mydbname", $con); 

編輯

嘗試包括數據庫連接標誌在查詢中,並且還替換'4'(即nico表示它是否爲autoinc它必須是一個整數,不包括引號):

mysql_query("INSERT INTO members VALUES 
      (null, '$rusername', '$rpassword');", $con); 
+0

我改變它所以它會更容易閱讀。 – nosedive25 2010-05-22 00:06:00