我试图显示 userCZ = $_SESSION['user'] 的每一行,但每当我尝试使用 var 时,它什么也找不到。 如果我将 var 替换为文字字符串,它就可以完美工作。 我还尝试检查 var 是否不为空,并且它在脚本开头返回正确的值。 我认为我在语法中遗漏了一些东西,但我尝试过使用 '' 和 ""但仍然不起作用。
<?php
session_start();
$userCZ=$_SESSION['user'];
require_once __DIR__ . "/../../init.php";
require_once __DIR__ . "/../../functions/db.php";
if (isset($_GET['start']) && isset($_GET['end'])) {
$stmt = 'SELECT * FROM the_events WHERE userCZ = '$userCZ' AND start_date >=
:start and end_date <= :end';
$_events = QuickPdo::fetchAll($stmt, [
'start' => $_GET['start'],
'end' => $_GET['end'],
]);
$events = [];
foreach ($_events as $e) {
$events[] = [
'id' => $e['id'],
'title' => $e['title'],
'project' => $e['project'],
'start' => dateMysqlTime2Iso8601($e['start_date']),
'end' => dateMysqlTime2Iso8601($e['end_date']),
];
}
echo json_encode($events);
}
最佳答案
这可以通过绑定(bind)所有动态值来解决:
$_events = QuickPdo::fetchAll(,
'SELECT * FROM the_events WHERE userCZ = :userCZ AND start_date >= :start and end_date <= :end',
[
'userCZ' => $userCZ,
'start' => $_GET['start'],
'end' => $_GET['end'],
]
);
除非别无选择,否则请避免使用字符串插值,并且当发生这种情况时,请采取一切可能的预防措施以确保安全地进行。
关于php - 无法在 SQL 查询中使用 PHP var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46657284/