簡體   English   中英

在where子句中使用php變量時,MySQL查詢不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM