在这里,我想使用AND添加另一个变量。
$this->route('catalog');
我想使用AND将$this->route('catalog')->id;
添加到此查询中。我该怎么办?
答案 0 :(得分:3)
PHP PDO支持位置(?)和命名(:email)占位符,后者总是从冒号开始,并且只能使用字母,数字和下划线编写。另外请注意,不必在占位符周围使用任何引号。
例如:
以下内容变为
$sql = "SELECT * FROM users WHERE email = '$email' AND status='$status'";
收件人
$sql = 'SELECT * FROM users WHERE email = ? AND status=?';
OR
$sql = 'SELECT * FROM users WHERE email = :email AND status=:status';
对于占位符,您必须使用PDO :: prepare()方法进行准备
要执行查询,必须运行该对象的execute()方法,并以数组的形式在其中传递变量
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = ? AND status=?');
$stmt->execute([$email, $status]);
$user = $stmt->fetch();
// or
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email AND status=:status');
$stmt->execute(['email' => $email, 'status' => $status]);
$user = $stmt->fetch();
非常好的参考资料,提供了完整的教程:https://phpdelusions.net/pdo
答案 1 :(得分:2)
如果您使用的是PHP5 +,则应在执行语句时将参数绑定到查询字符串之外。
示例:
$query = $db->prepare('SELECT * FROM messages WHERE Subject_Code = :subj AND Week = :week')
$query->execute(array(
':subj' => $_SESSION['sub1'],
':week' => $_SESSION["weekS1"],
));