在where子句

时间:2018-12-28 01:13:23

标签: php json mysqli

我正在尝试在MYSQL的(uid =)子句中比较PHP变量$ emplID。该变量的值为999。直接将值分配给该变量可以正常工作。不会使用在较早的MYSQL提取期间获得的变量。

我花了几个小时试图找到解决方案,但没有任何结果。

数据库列uid为varchar。我也尝试过使用int。

我怀疑这可能是某些隐藏字符,例如空终止符或变量类型不同。但是,Var_dumps在直接分配的值和获得的变量值之间没有任何区别。 string(3)“ 999”

我在引号上摆了很多东西,看看我在那儿做错了什么。 (and uid ='$ uid'“); and 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;

1 个答案:

答案 0 :(得分:0)

我想不出失败的充分原因。分配变量的方式不会影响使用该变量的将来代码。

但是,只需将两个查询结合起来,就可以避免整个事情。

    $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'");