親愛的,
我的 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 name="serverfile" tabindex="6">';
while($rs=mysqli_fetch_array($sql)){
$select.='<option value="'.$rs['FileID'].'">'.$rs['FileTitle'].'</option>';
}
}
$select.='</select>';
echo $select;
}
我正在跳躍這將顯示陣列中專案的選擇選項,該選項與第二個 mysql 查詢中的條件匹配,如果找到的陣列專案將其顯示在 select 的選項中。
任何人都可以解決這個問題?
uj5u.com熱心網友回復:
<select>在外回圈之前開始,而不是每次都通過。
$select= '<select 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;
正如評論中提到的,您可以將兩個查詢與 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 name="serverfile" tabindex="6">';
while($rs=mysqli_fetch_array($result)){
$select.='<option value="'.$rs['FileID'].'">'.$rs['FileTitle'].'</option>';
}
$select.='</select>';
echo $select;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/386894.html
