我试图使用WHERE获取SQL查询的结果,每当我使用$ _GET变量时它都不起作用,现在我已经回显了$ query变量,它显示了$ _GET ['idced'的值]但由于某种原因,它不执行查询,因此循环不显示任何内容。
但是当我手动输入我要比较的值时,它完全正常...任何帮助都将非常感激..我也知道他们可能是使用GET但它的本地应用程序的一些安全问题所以这不是一个问题..这是我的代码:
<?php
$mysqli = new mysqli("localhost", "cx", "", "cxtrack");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
$idced_history = mysqli_real_escape_string($mysqli, $_GET['idced']);
//This is the query that is not working:
$query = "SELECT * FROM applications WHERE idced = $idced_history;";
if ($result = $mysqli->query($query)) {
//This loop works fine when I replace $idced_history with a value of idced
while ($row = $result->fetch_assoc()) {
$curenttime=$row["applicationposition"];
$time_ago =strtotime($curenttime);
echo "<div style='background:red; position:relative; top:2.6em; margin-bottom:1%;'>";
echo "<a href='#'>".$row["applicationposition"]."</a><br/>";
echo "Applied On: ".$row["applicationdate"]." ( ". timeAgo($time_ago) ." ) <br>";
echo "Via: ".$row["applicationtype"]."</div>";
}
$result->free();
}
$mysqli->close();
?>
答案 0 :(得分:1)
有时它不会那样工作..尝试改为:
$query = "SELECT * FROM applications WHERE idced = ".$idced_history;
答案 1 :(得分:1)
它不起作用,因为你从url获取的是一个字符串,你应该使用单引号从sql查询中备用字符串。否则,mysql就像你的变量一样作为表名。
试
"SELECT * FROM applications WHERE idced = '$idced_history'";