MySQL-запрос не работает при использовании переменной php в предложении where - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь сравнить PHP-переменную $ emplID в предложении MYSQL where (uid =).Значение этой переменной - 999. Непосредственное присвоение значения переменной работает нормально.Использование переменной, полученной во время более ранней выборки MYSQL, не помогает.

Я потратил несколько часов, пытаясь найти решение без какого-либо результата.

uid столбца базы данных varchar.Я также пытался сделать это, используя int.

Я подозревал, что это может быть какой-то скрытый символ, такой как нулевой терминатор или разница в типе переменной.Var_dumps, однако, не показывают никакой разницы между непосредственно назначенным значением и полученным значением переменной.string (3) "999"

Я много играл с кавычками, чтобы посмотреть, не ошибся ли я там.(и uid = '$ uid' "); и uid = $ uid");и uid = '". $ uid."' ");

Я заметил, что после добавления дампа var, print_r или echo после $ uid = $ emplID, он также больше не работает с переменной, назначенной непосредственно значениюЯ подозреваю, что это указывает на основную проблему здесь.

Мне кажется, что я упускаю что-то простое здесь. Но, к сожалению, не могу справиться с этим.

 $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 голосов
/ 28 декабря 2018

Я не могу придумать вескую причину, почему она терпит неудачу.Способ присвоения переменной не влияет на будущий код, который ее использует.

Однако всего этого можно избежать, просто объединив два запроса.

    $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'");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...