gpt4 book ai didi

PHP/MySQL 问题插入数组

转载 作者:行者123 更新时间:2023-11-29 04:40:00 25 4
gpt4 key购买 nike

我正在尝试将数据插入 MySQL 表中,其中一列正在插入“数组”而不是数组值。请问我错过了什么?谢谢。

 id         studentname     title   academicdiscipline  priority 
012345678 TEST, NAME Array Civil 3
012345678 TEST, NAME Array Civil 1
012345678 TEST, NAME Array Civil 4
012345678 TEST, NAME Array Civil 5
012345678 TEST, NAME Array Civil 2

以下是我将数据插入数据库的方式 - 除了“标题”列外,它工作得很好:

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

$id = $_POST["id"];
$studentname = $_POST["studentname"];
$title = $_POST["title"];
$academicdiscipline = $_POST["academicdiscipline"];
$priority = $_POST["priority"];

$array = array();
foreach ($priority as $priority) {
if ($priority >=1) {
$array[] = "('$id', '$studentname', '$title', '$academicdiscipline', '$priority')"; }

$query = "INSERT INTO flux_project_selection (id, studentname, title, academicdiscipline, priority) VALUES" .implode(',', $array); }
$retval = mysql_query($query) or die(mysql_error()); }

编辑:这是表单的 HTML:

        <table width="890" cellspacing="0"> 
<thead><tr>
<th></th>

<th width="250"> Title </th>
<th width="550"> Description </th>
<th width"90"> Field </th>
<th width="50"> Select </th>
</tr></thead>
<?php
$color1 = "#E9E9E9";
$color2 = "#FFFFFF";
$row_count = 0;

echo "<tr>
<td valign = \"top\" bgcolor=\"$row_color\">
<input type=\"hidden\" name=\"id[]\" value=\"$id\">
<input type=\"hidden\" name=\"studentname[]\" value=\"$studentname\"></td>

<td valign = \"top\" bgcolor=\"$row_color\">
<input type=\"hidden\" name=\"title[]\" value=\"$title\"> $title </td>

<td valign = \"top\" bgcolor=\"$row_color\">
<input type=\"hidden\" name=\"description[]\" value=\"$description\"> $description </td>

<td valign = \"top\" bgcolor=\"$row_color\">
<input type=\"hidden\" name=\"academicdiscipline[]\" value=\"$academicdiscipline\"> $academicdiscipline </td>

<td valign = \"top\" bgcolor=\"$row_color\">
<select name=\"priority[]\" class=\"priority\">
<option> </option>
<option value=\"1\"> 1 </option>
<option value=\"2\"> 2 </option>
<option value=\"3\"> 3 </option>
<option value=\"4\"> 4 </option>
<option value=\"5\"> 5 </option>
<option value=\"6\"> 6 </option>
<option value=\"7\"> 7 </option>
<option value=\"8\"> 8 </option>
<option value=\"9\"> 9 </option>
<option value=\"10\"> 10 </option>
</select>

</td></tr>
<tr bgcolor=\"#ffffff\"> </tr>
<tr bgcolor=\"#902C2E\"> </tr>";

$row_count++;

echo"<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td ><input name=\"reset\" type=\"reset\" value=\"Clear selection\"/>
<input name=\"submit\" type=\"submit\" value=\"Submit selection\"/>
</tr></table>";
?>

最佳答案

一大堆这样的东西根本没有意义。请正确格式化您的代码,这将有助于调试。另外,请使用像PDO这样的库.它将使对这些类型的事物进行编程变得更容易、更快和更安全。

我会尽力挽救这段代码的一部分。 请注意该代码不安全并且不能防止 MYSQL 注入(inject)。

这里是实现,稍后我会解释我的推理......

if (isset($_POST['submit'])) { 
$id = $_POST["id"];
$studentname = $_POST["studentname"];
$title = $_POST["title"];
$academicdiscipline = $_POST["academicdiscipline"];
$priority = $_POST["priority"];

foreach ($priority as $single) {
if ($single >=1) {
$values = "('$id', '$studentname', '$title', '$academicdiscipline', '$single')";

$query = "INSERT INTO flux_project_selection (id, studentname, title, academicdiscipline, priority) VALUES " . $values;
$retval = mysql_query($query) or die(mysql_error());
}
}
}

更正...

  1. 修复了 foreach 循环变量名称,不要让您的值和数组名称相同。
  2. 摆脱了数组变量,它什么也没做
  3. 将所有内容都嵌套在 if 中,因此现在对于每个选定的优先级,脚本将在具有该优先级的数据库中插入一行。

我不确定这是否是您希望程序执行的操作,请告诉我。

关于PHP/MySQL 问题插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31714275/

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