gpt4 book ai didi

php - 从多个选择框向 MySQL 发送多条记录

转载 作者:行者123 更新时间:2023-11-29 01:34:23 24 4
gpt4 key购买 nike

我正在尝试根据从多选框中选择的选项数量将多行插入到 MySQL 表中。目前它正在插入一行(无论选择了多少选项)但每次“策略名称”列都是空的。

关于如何插入多行以及为什么选项的值没有发送到表中有什么想法吗?

这是表格:

<form method="POST" action="update4.php">

<input type="hidden" name="id" value="1">

<p class="subheadsmall">Strategies</p>

<p class="sidebargrey">

<?php

$result = mysql_query("SELECT strategyname FROM sslink WHERE study_id = '{$_GET['id']}'");
if (!$result) {
die("Database query failed: " . mysql_error());
}

while($row = mysql_fetch_array($result)) {
$strategyname = $row['strategyname'];


echo $strategyname.'<br />';
}

?>
<p class="subheadsmall">Add a strategy... (hold down command key to select more than one)</p>

<select name="strategylist" multiple="multiple">
<?php

$result = mysql_query("SELECT * FROM strategies");
if (!$result) {
die("Database query failed: " . mysql_error());
}

while($row = mysql_fetch_array($result)) {
$strategylist = $row['name'];
$strategyname = htmlspecialchars($row['name']);
echo '<option value="' . $strategylist . '" >' . $strategyname . '</option>' . '\n';
}

?>
</select>
</p>



<input type="submit" class="box" id="editbutton" value="Update Article">

</form>

这是将它发送到数据库的内容:

<?php
$id=$_POST['id'];
$test=$_POST['strategylist'];
$db="database";

$link = mysql_connect("localhost", "root", "root");
//$link = mysql_connect("localhost",$_POST['username'],$_POST['password']);
if (! $link)
die("Couldn't connect to MySQL");
mysql_select_db($db , $link) or die("Select Error: ".mysql_error());
//for($i=0;$i<sizeof($_POST["test"]);$i++)
//{
//$sql = "insert into tbl_name values ($_POST["test"][$i])"; }
//sql = "INSERT INTO table_name VALUES ('" . join(",",$_POST["test"]) . "')";
$result=mysql_query("INSERT INTO sslink (study_id, strategyname) VALUES ('$id','" . join(",",$_POST["strategylist"]) . "')")or die("Insert Error: ".mysql_error());
mysql_close($link);
print "Record added\n";
?>

最佳答案

几点:

  • 您的 select 需要命名为 strategylist[] 以告诉 PHP 它将包含一个数组而不是单个值
  • 然后您的插入代码需要遍历该数组,为它包含的每个元素创建一个新的插入,除非(看起来)您希望将所有这些选项连接到单个行的字段中。

目前,您的表单仅返回一个选项(从 PHP 的角度来看),因此它只会插入一行。

要遍历数组,请使用如下内容:

foreach($_POST["strategylist[]"] as $s) {
# do the insert here, but use $s instead of $_POST["strategylist[]"]
$result=mysql_query("INSERT INTO sslink (study_id, strategyname) " .
"VALUES ('$id','" . join(",",$s) . "')")
or die("Insert Error: ".mysql_error());
}

关于php - 从多个选择框向 MySQL 发送多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1063385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com