[英]MySQL query not working when using php variable in where clause
我正在嘗試比較 MYSQL where (uid=) 子句中的 PHP 變量 $emplID。 這個變量的值是 999。直接給變量賦值就可以了。 使用在較早的 MYSQL 提取期間獲得的變量不會。
我花了幾個小時試圖找到一個沒有任何結果的解決方案。
數據庫列 uid 是 varchar。 我也嘗試使用 int 來做到這一點。
我懷疑它可能是一些隱藏字符,如空終止符或變量類型的差異。 然而,Var_dumps 在直接分配的值和獲得的變量值之間沒有任何區別。 字符串(3)“999”
我擺弄了很多引號,看看我是否在那里做錯了什么。 (和 uid= '$uid'"); 和 uid= $uid"); 和 uid='".$uid."'");
我注意到在 $uid = $emplID; 之后添加 var dump、print_r 或 echo 時; 它也不再適用於直接賦值的變量。 我懷疑這指向了這里潛在問題的方向。
我覺得我在這里錯過了一些簡單的東西。 但遺憾的是無法掌握它。
$sqlempl = "SELECT `id` FROM `EMPLOYERS` WHERE `Name` = '".$emplNAME."'";
$result = $connection->query($sqlempl);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "employer id: ";
$emplID = $row["id"];
//echo $emplID;
}
} else {
echo "ERROR4";
}
}
//$emplID = "999";
$uid = $emplID; // set your user id settings
$datetime_string = date('c',time());
if(isset($_POST['action']) or isset($_GET['view']))
{
if(isset($_GET['view']))
{
header('Content-Type: application/json');
$start = mysqli_real_escape_string($connection,$_GET["start"]);
$end = mysqli_real_escape_string($connection,$_GET["end"]);
// $uid = mysqli_real_escape_string($connection,$_GET["uid"]);
$result = mysqli_query($connection,"SELECT `id`, `start` ,`end` ,`title` FROM `events` where (date(start) >= '$start' AND date(start) <= '$end') and uid= '$uid'");
while($row = mysqli_fetch_assoc($result))
{
$events[] = $row;
}
echo json_encode($events);
exit;
我想不出它失敗的充分理由。 變量的賦值方式對以后使用它的代碼沒有影響。
但是,您可以通過簡單地連接兩個查詢來避免這整個事情。
$result = mysqli_query($connection,"
SELECT ev.`id`, ev.`start` ,ev.`end` ,ev.`title`
FROM `events` AS ev
JOIN EMPLOYERS AS em ON ev.uid = em.id
where date(ev.start) BETWEEN '$start' AND '$end'
AND em.name = '$emplName'");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.