gpt4 book ai didi

PHP 文本区域到 MySQL 查询变量不返回所有行结果

转载 作者:行者123 更新时间:2023-11-29 21:57:28 25 4
gpt4 key购买 nike

我使用文本区域是为了允许一次搜索多个项目并将结果输出到表格中。当仅将一个项目放入文本区域并进行搜索时,一切正常,但是如果搜索多个项目,则不会返回第一行/搜索项目的查询结果。我的代码:

<textarea name="search_items" rows="2" cols="30"></textarea>

$input = $_POST['search_items'];
list($pc1, $pc2) = explode("\n", $input);

$desc = mysqli_query($my_connection,"SELECT PART_DESC FROM inventory WHERE PARTCODE = '$pc1' OR PARTCODE = '$pc2';");

$i=1;
while($row_desc = mysqli_fetch_assoc($desc)) {
${'pc_desc'.$i} = $row_desc['PART_DESC'];
$i++;
}

<table>
<tr>
<td><?php echo "$pc1"; ?></td>
<td><?php echo $pc_desc1; ?></td>
</tr>
<tr>
<td><?php echo "$pc2"; ?></td>
<td><?php echo $pc_desc2; ?></td>
</tr>
</table>

$pc1 回显文本区域的第 1 行,$pc2 回显文本区域的第 2 行。我得到了 $pc_desc2 的正确结果,但 $pc_desc1 为空。如果我像这样手动分配 $pc1$pc2 :

$pc1 = "ABC";
$pc1 = "XYZ";

$pc_desc1$pc_desc2 都正确返回。请帮忙!

最佳答案

如果不解决你的 SQL 注入(inject)问题,你最好使用这样的东西:

...
$parts = explode("\n", $input);
$sql = "SELECT ... PARTCODE IN (" . implode(',', $parts) . ");";
...
while($row_desc = mysqli_fetch_assoc($desc)) {
$data[$row['PART_CODE']] = $row['PART_DESC'];
}

<table>

foreach($data as $code => $desc) {
echo "<tr><td>$code</td><td>$desc</td></tr>
}

使用您的代码,您无法保证描述返回的顺序,并且最终可能会“交叉”事物,因此您的部分#1 带有描述#2,部分#2 带有描述#1。上面的代码保证代码/描述始终正确关联在一起。并且还省去了动态变量名,这使得代码难以/不可能调试。同样,上面的代码可以处理任意数量的代码,而您的代码仅限于 2 个。

关于PHP 文本区域到 MySQL 查询变量不返回所有行结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32997073/

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