如何将简单数组插入数据库(php/MySQL)?

如何将简单数组插入数据库(php/MySQL)?,php,Php,我正在开发一个表单,在该表单中,用户进行一些选择,然后每个选定项的名称都需要进入数据库中的一个表中。用户名可以与每个项目一起作为用户选择的标识符。选择的数量和选择的名称将更改,但数据库中的两个字段保持不变。我的问题是,在insert时,我得到一个错误,即我发送的值中没有指定名称的列。它把我都绊倒了…不知道为什么。非常感谢您的帮助和建议 完整代码: <?php $db = mysql_connect('localhost', 'root', 'root') or die(mysql_er

我正在开发一个表单,在该表单中,用户进行一些选择,然后每个选定项的名称都需要进入数据库中的一个表中。用户名可以与每个项目一起作为用户选择的标识符。选择的数量和选择的名称将更改,但数据库中的两个字段保持不变。我的问题是,在insert时,我得到一个错误,即我发送的值中没有指定名称的列。它把我都绊倒了…不知道为什么。非常感谢您的帮助和建议

完整代码:

<?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>

$photo在SQL语句中没有引号。此外,循环如下所示:

循环1:$username=harp1,$photo=[第一个选中复选框的值]

循环2:$username=harp2,$photo=[第二个值]

循环3:$username=harp3,$photo=[第三个值]


这没有意义…

使用双引号字符串创建数据库查询:

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

你忘了在$photo周围加引号。双引号字符串通过使其更易于阅读来减少此类错误。

反射数据库的结构是什么?此用户表单中有哪些字段?此外,实际上不需要内爆/爆炸。这背后有什么原因吗?谢谢你的回复!表单位于php下面的代码中。我把$photos放在双引号中,这给了我一个错误:谢谢回复!我在$photos中添加了双引号,但出现了错误:注意:未定义的偏移量:第24行的/Users/harp/Sites/lw/reflect/array.php中的1注意:未定义的偏移量:第24行的/Users/harp/Sites/lw/reflect/array.php中的2数据库表只有两列,没有索引等,一个是“name”,另一个是“photo”。理想情况下,用户只需在db中输入一个名称,并从表单中进行选择。表单代码在上面的php代码下面。谢谢很难说清楚,但通知可能会出现,因为您没有选择任何复选框。photo值获取选定复选框的索引。如果未选择任何选项,将导致错误。这段代码中的所有问题都无法完全纠正,但是SQL中的引号应该可以修复插入。是的,你说得对!当我清除页面,然后选择一对时,它实际上会插入它们。令人惊叹的剩下的我会自己解决的。非常感谢,非常感谢。