使用 PHP 和 HTML 选择选项在另一个 mysql 查询中使用数组数据
Posted
技术标签:
【中文标题】使用 PHP 和 HTML 选择选项在另一个 mysql 查询中使用数组数据【英文标题】:Use Array data in another mysql query using PHP and HTML select option 【发布时间】:2022-01-21 06:45:23 【问题描述】:亲爱的,
我的 php 代码有问题.. 我想要做的是在第二个 mysql 查询中使用数组数据来列出可用的选项。
解释:
$conn = mysqli_connect($dbhost,$dbuser,$dbpass) or sqlerror();
mysqli_select_db($conn,$dbname);
$sql = mysqli_query($conn,"SELECT * FROM ADMIN WHERE id='".$_SESSION["adminusername"]."'");
$isadmin=mysqli_fetch_array($sql);
$arraydata= $isadmin["Files"];
mysqli_close($conn);
$array3 = explode(',',$arraydata);
现在,上面的代码给了我: $arraydata = "26,27,28,29"
我使用 $array3 删除逗号 .. 然后尝试 foreach ,因为应该执行以下代码:
$conn = mysqli_connect($dbhost,$dbuser,$dbpass) or sqlerror();
mysqli_select_db($conn,$dbname);
foreach ($array3 as $singleID)
$sql=mysqli_query($conn,"SELECT FileID,FileTitle FROM Servers WHERE
FileType='CFG' AND FileID='".$singleID."'");
if(mysqli_num_rows($sql))
$select= '<select class="smallInput" name="serverfile" tabindex="6">';
while($rs=mysqli_fetch_array($sql))
$select.='<option value="'.$rs['FileID'].'">'.$rs['FileTitle'].'</option>';
$select.='</select>';
echo $select;
我正在跳跃,这将显示 Array 中与第二个 mysql 查询中的条件匹配的项的选择选项,如果找到数组项,则在 select 的选项中显示它..
谁能解决这个问题?
【问题讨论】:
为什么不直接将服务器表加入到原始查询中呢?您也对 SQL 注入持开放态度。始终参数化查询。 我可以将服务器表加入到原始查询中,但在 html 中使用 你不应该有嵌套循环。只需执行一个查询即可获取所有选项,方法是将两个表连接起来。 将分隔列表放在表格中也是不好的设计。见***.com/questions/3653462/… @Barmar 如何查询获取所有信息? html中的选择选项下拉列表怎么样,我希望它显示查询中的所有数据 【参考方案1】:在外循环之前启动<select>
,而不是每次都通过。
$select= '<select class="smallInput" name="serverfile" tabindex="6">';
foreach ($array3 as $singleID)
$sql=mysqli_query($conn,"SELECT FileID,FileTitle FROM Servers WHERE
FileType='CFG' AND FileID='".$singleID."'");
while($rs=mysqli_fetch_array($sql))
$select.='<option value="'.$rs['FileID'].'">'.$rs['FileTitle'].'</option>';
$select.='</select>';
echo $select;
如 cmets 中所述,您可以将两个查询与 JOIN 结合起来。我还展示了如何使用参数来防止 SQL 注入。
$stmt = mysqli_prepare($conn, "
SELECT FileID, FileTitle
FROM Servers AS s
JOIN ADMIN AS a ON FIND_IN_SET(s.FileID, Servers.Files)
WHERE s.FileType = 'CFG'
AND a.id = ?");
mysqli_stmt_bind_param($stmt, "s", $_SESSION["adminusername"]);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$select= '<select class="smallInput" name="serverfile" tabindex="6">';
while($rs=mysqli_fetch_array($result))
$select.='<option value="'.$rs['FileID'].'">'.$rs['FileTitle'].'</option>';
$select.='</select>';
echo $select;
【讨论】:
感谢您提供此解决方案,最佳答案以上是关于使用 PHP 和 HTML 选择选项在另一个 mysql 查询中使用数组数据的主要内容,如果未能解决你的问题,请参考以下文章
如何使已选择的选项不显示在另一个选择选项下拉 JAVASCRIPT/ANGULARJs