2011-02-06 100 views
0

我正在處理一個表單,在這個表單中用戶進行了一些選擇,然後每個選定的項目的名稱都需要進入db中的表格。用戶的姓名可以與每個項目一起作爲用戶選擇的標識符。選擇的數量和選擇的名稱將改變,但數據庫中的兩個字段保持不變。我的問題是,在插入時,我收到一個錯誤消息,指出在我發送的VALUE中指定的名稱沒有列。它把我絆倒了......不知道爲什麼。非常感謝您的幫助或建議。如何將簡單數組插入數據庫(php/MySQL)?

全碼:

<?php 

$db = mysql_connect('localhost', 'root', 'root') or die(mysql_error()); 
mysql_select_db('reflex') or die(mysql_error()); 

$name_array = array('harp1','harp2','harp3'); 

if (isset($_POST['interests'])) { 

    $interests_str = implode(" ", $_POST['interests']);// converts $_POST interests into a string 
    $interests_array = explode(" ", $interests_str);// converts the string to an array which you can easily manipulate 




      foreach ($name_array as $row=>$name) 

      { 

      $username = mysql_real_escape_string($name); 

      $photo = mysql_real_escape_string($_POST['interests'][$row]); 

      mysql_query('INSERT INTO photos (username, photo) VALUES ("' . $username . '", ' . $photo . ')') or die(mysql_error()); 

      } 




} 



?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>array test</title> 
</head> 
<body> 
<form action="array.php" method="post"> 



    <input type="checkbox" name="interests[]" value="Politics" />Politics<br /> 
    <input type="checkbox" name="interests[]" value="Entertainment" /><br /> 
    <input type="checkbox" name="interests[]" value="Tech" /><br /> 
    <input type="checkbox" name="interests[]" value="Health" /><br /> 
    <input type="checkbox" name="interests[]" value="Living" /><br /> 
    <input type="checkbox" name="interests[]" value="Travel" /><br /> 
    <input type="checkbox" name="interests[]" value="World" /><br /> 


    <input type="submit" value="Submit"> 
</form> 
</body> 
</html> 
+0

'reflex'db的結構是什麼,這個用戶表單中有哪些字段? – ayush 2011-02-06 08:00:35

回答

0

$照片並未用引號在SQL語句所包圍。此外,循環是這樣的:

循環1:$用戶名= 「harp1」,$相片= 「[第一選定複選框的值]」

循環2:$用戶名= 「harp2」,$照片= 「[第二個值]」

循環3:$用戶名= 「harp3」,$照片= 「[第三值]」

它沒有任何意義......

+0

另外,implode/explode並不是真的需要。這背後有理由嗎? – Craig 2011-02-06 08:02:13

0

使用雙引號創建數據庫查詢的字符串:

mysql_query("INSERT INTO photos (username, photo) VALUES ('$username', '$photo')") 
    or die(mysql_error()); 

你忘了報價$photo。雙引號字符串通過使它們更易於閱讀來減少這種錯誤。