2011-02-06 56 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。双引号字符串通过使它们更易于阅读来减少这种错误。