Php 将数组条目分隔到数据库中

Php 将数组条目分隔到数据库中,php,mysql,arrays,Php,Mysql,Arrays,我正在寻找一个问题的帮助,我正在尝试将数组中的值分别注入MySQL表。因此,不是将整个数组放在一行中,而是放在单独的条目中 表格是这样的: <form <form class="reg" name="main_form" action="form.php" method="post">> <ul> <li> <label for="text1"> <input type="checkbox" nam

我正在寻找一个问题的帮助,我正在尝试将数组中的值分别注入MySQL表。因此,不是将整个数组放在一行中,而是放在单独的条目中

表格是这样的:

    <form <form class="reg" name="main_form" action="form.php" method="post">>
<ul>
    <li>
    <label for="text1">
    <input type="checkbox" name="task[]" value="text1" />text1
    </label>
    </li>
    <li>
    <label for="text2">
    <input type="checkbox" name="task[]" value="text2" />text2
    </label>
    </li>
    <li>
    <label for="text3">
    <input type="checkbox" name="task[]" value="text3" />text3
    </label>
    </li>
</ul>
<input type="submit" value="submit" />
</form>

  • 文本1
  • 文本2
  • 文本3
在form.php中,我现在有类似的东西,它可以将所有选定的框放在表中的一行中:

<?php
require 'db/config.php';

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$link){
    die('Could not connect due to: ' . mysql_error());
}

$db_selected = mysql_select_db(DB_NAME, $link);

if (!$db_selected){
    die('Can\'t use: ' . DB_NAME . ': ' . mysql_error());
}

$task = implode (PHP_EOL, $_POST['task']);

$sql = "INSERT INTO completed (task) VALUES ('$task')";

if (!mysql_query($sql)){
    die('Error: ' . mysql_error());
}

mysql_close();
?>
您的版本已修复
您的固定版本,但您的api已弃用,并且您的方法是而不是sql注入保存不要使用这种方法使用更好的方法,我在后面的回答中提到

替换这个

$task = implode (PHP_EOL, $_POST['task']);
$sql = "INSERT INTO completed (task) VALUES ('$task')";

if (!mysql_query($sql)){
    die('Error: ' . mysql_error());
}
用这个

<?php
foreach ($_POST['task'] as $task) {
    $sql = "INSERT INTO completed (task) VALUES ('$task')";
    if (!mysql_query($sql)){
        die('Error: ' . mysql_error());
    }
}

我只是想顺便说一下,正如Kordi所说的,mysql扩展已被弃用,但不仅如此,它已从最新的php版本中删除,因此您应该避免使用它。@请注意,它已从最新的php版本中完全删除。将此添加到我的帖子中。感谢您的快速回复。是的,我会更改api,但在我开始更改太多之前,我只是尝试替换您最初提供给我的api,它只会进入最后选择的SQL框。即,如果我选中复选框1、2和4,则数据库中仅显示4。不知道为什么…从我所能看出的代码看起来不错:@Rod可能只是将sql转储出来,看看您发送到服务器的sql查询。你桌子的结构看起来怎么样?
<?php
require 'db/config.php';

$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
}

$stmt = $mysqli->prepare("INSERT INTO completed (task) VALUES (?)");
if (!$stmt) {
    echo $mysqli->error;
    exit();
}

foreach ($_POST['task'] as $task) {
    $stmt->bind_param("s", $task);
    $stmt->execute();
}

$stmt->close();
$mysqli->close();
mysql> select * from completed;
+-------+
| task  |
+-------+
| text1 |
| text2 |
+-------+