2009-10-18 58 views
0

你好我有一個數組$ name [],我試圖插入到我的表的第二個字段,但它不工作(表仍然是完全空白的)。我在代碼中找不到錯誤,我做錯了什麼?插入php數組數據到mysql不起作用

$username="us"; 
$password="pw"; 
$database="db"; 
mysql_connect(localhost,$username,$password); 
@mysql_select_db($database) or die("error"); 

$i=0; 
while ($i < 5) { 


$query = "INSERT INTO table VALUES ('','$name[i]','','')"; 
mysql_query($query); 

$i++ 
} 

mysql_close(); 

有什麼想法嗎?謝謝。

+1

普羅蒂普:使用一個for循環會爲你節省兩行代碼。 for($ i = 0; $ i <5; $ i ++){...} – 2009-10-18 19:51:27

+0

這解決了它。 在while循環中有上面的錯誤,我不知道它是什麼。但用for循環替換while循環可以解決這個問題。 – 2009-10-18 20:13:35

+0

我認爲btw的錯誤是$ i ++缺少a;之後。 – 2009-10-19 03:12:53

回答

5

您使用常量i而不是$i作爲密鑰$name。所以,試試這個:

"INSERT INTO table VALUES ('','".$name[$i]."','','')" 

你也應該使用mysql_real_escape_string逃脫了MySQL查詢值:

"INSERT INTO table VALUES ('','".mysql_real_escape_string($name[$i])."','','')" 
+0

或者這個:「INSERT INTO TABLE VALUES('','{$ name [$ i]}','','')」 – 2009-10-18 19:50:21

+0

這也行不通。 – 2009-10-18 19:59:21

0

嘗試運行這樣的查詢:

mysql_query($query) or die(mysql_error()); 

這會給你一個如果您的查詢出現問題,請更好地瞭解您做錯了什麼。您也可以打印您的SQL調試:

echo "Query $i: $query<br />" 
2

嗯,首先,所有將做的是把3列1,一個條目,4空白,第2列與價值$name[i]。要在字符串中有一個變量,它需要用雙引號。但是當你只有變量的時候,我沒有看到這麼做的意義。另外,$name[i]應該是$name[$i]

+0

我將其更改爲$ name [$ i],這沒什麼區別。我現在將其他列留空,因爲我嘗試只獲取一列數據,當它工作時,我可以將其他數組放入列中。 – 2009-10-18 19:54:57

1

確保在連接這樣的查詢時轉義。 $'',';','','「。mysql_real_escape_string($ name [$ i])。'','','')」;

如果你沒有,你可能會受到不良SQL injection