我使用此代码使用PDO生成搜索查询:
$test = $_POST["user_search"];
//search for user in database
$query = $conn->prepare('SELECT * FROM user WHERE user_email LIKE ' . "':search'");
$keyword = "%".$test."%";
$query->bindParam(':search', $keyword, PDO::PARAM_STR);
$query->execute();
$results = $query->fetchAll();
print_r($results);
$query->debugDumpParams()
调试输出为:
SQL: [50] SELECT * FROM user WHERE user_email LIKE ':search' Params: 1 Key: Name: [7] :search paramno=-1 name=[7] ":search" is_param=1 param_type=2
知道哪里出错了吗?例如$ _POST [" user_search"]是" 507"作为价值。阅读调试输出似乎存在问题,因为价值不会在任何地方显示。
答案 0 :(得分:0)
PDO会提供正确转义数据所需的任何报价。占位符应该按原样放置:
$query = $conn->prepare('SELECT * FROM user WHERE user_email LIKE :search');
使用字符串调用bindParam
将提示PDO使用引号并相应地转义该值。