PHP在查询中使用''而不将值转换为指针

时间:2018-11-06 12:31:21

标签: php pdo prepared-statement

我需要执行sql查询,其中需要使用撇号,因为我搜索的是电子邮件地址。现在,当我在查询中键入''时,它们将成为变量指针,但它们只应告诉mysql这是一个字符串。

如何告诉程序以其他方式使用它们?我已经尝试过pdo->quote

$statement = $pdo->prepare("SELECT user_id FROM tbl_server WHERE user_id = (SELECT user_id from tbl_user where Email = ':email') "); // here i need the normal apostrophe
$result = $statement->execute(array('email' => $email));
$user = $statement->fetch();

1 个答案:

答案 0 :(得分:4)

您不得在查询中引用:email;数据库驱动程序将确定如何处理参数,因为它知道数据库中传递的类型和列的类型。但是在执行参数化查询时,您需要在:之前加email

$statement = $pdo->prepare("SELECT user_id FROM tbl_server WHERE user_id = (SELECT user_id from tbl_user where Email = :email) "); // here i need the normal apostrophe
$result = $statement->execute(array(':email' => $email));
$user = $statement->fetch();

通过检查$resulttrue还是false的方式,您的查询也可能会提供空结果集。因此,您应该在提取后检查$user === false(即找不到用户)。