我正在尝试在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;
答案 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'");