我需要执行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();
答案 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();
通过检查$result
是true
还是false
的方式,您的查询也可能会提供空结果集。因此,您应该在提取后检查$user === false
(即找不到用户)。