我有一个动态生成的网址:
https://mywebsite.co.uk/report.php?taskid=25&rep=1&rep=2&rep=3
我可以检索任务ID的变量并代表:
if (isset($_GET['taskid'])) { $taskid = $_GET['taskid']; }
if (isset($_GET['rep'])) { $referenceID = $_GET['rep']; }
我要做的是在页面上创建一个SQL语句,根据URL中的代表编号选择一行。例如:
SELECT TASK_ID, ID, NAME FROM mytable WHERE TASK_ID = $taskid AND ID = $referenceID
然而,当我回显$ referenceID的结果时,它始终是最后一个rep,所以在这种情况下3.如何从数据库中选择ID = 1,2&的行。 3?
然后我想显示每一行,所以它会像:
<table>
$result = mysqli_query($con,"SELECT TASK_ID, ID, NAME FROM mytable WHERE TASK_ID = $taskid AND ID = $referenceID");
while($row = mysqli_fetch_array($result))
{
$ID = $row['ID'];
$NAME = $row['NAME'];
print "<tr><td>$ID</td><td>$NAME</td></tr>";
}
</table>
此查询应在表中返回3行,每行包含ID AND NAME。
我们将不胜感激。
答案 0 :(得分:1)
首先,您需要将参数名称从rep更改为rep [] 这将导致PHP $ _GET ['rep']返回一个数组。
然后你需要内爆数组以获得带逗号的字符串:
if (isset($_GET['rep'])) {
$referenceID = implode(',',$_GET['rep']);
}
您必须将SQL语法更改为:
SELECT TASK_ID, ID, NAME FROM mytable WHERE TASK_ID = $taskid AND ID IN ($referenceID)
答案 1 :(得分:-1)
尝试此查询
$result = mysqli_query($con,"SELECT TASK_ID, ID, NAME FROM mytable WHERE TASK_ID = $taskid AND (ID <= $referenceID and ID>= 1)");
答案 2 :(得分:-1)
您应该使用数组样式的URL参数,例如
https://mywebsite.co.uk/report.php?taskid=25&rep%5B%5D=1&rep%5B%5D=2&rep%5B%5D=3
然后$_GET['rep']
将是一个数组,你可以这样做:
$referenceIDs = implode(',', array_map(array($con, 'real_escape_string'), $_GET['rep']));
$sql = "SELECT TASK_ID, ID, NAME
FROM mytable
WHERE TASK_ID = $taskid
AND ID IN ($referenceIDs)";