PHP WHERE子句MySQL中的许多变量

时间:2018-07-11 19:21:55

标签: php mysql

在这里,我想使用AND添加另一个变量。

$this->route('catalog');

我想使用AND将$this->route('catalog')->id; 添加到此查询中。我该怎么办?

2 个答案:

答案 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"],
));