这似乎不起作用,没有错误,只是没有返回任何内容:
$stmt = $pdo->prepare('SELECT * FROM deadfrontier.items WHERE item LIKE "?"');
$stmt->execute([$test]);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['item'];
}
但是,这样做:
$stmt = $pdo->prepare('SELECT * FROM deadfrontier.items WHERE item LIKE "RG6"');
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['item'];
}
我做错了什么?感谢。
(编辑:此处为$test
变量:$test = "RG6";
答案 0 :(得分:0)
我从来都不是PHP专家(虽然@Barmar),但我认为你不需要在准备好的声明中引用逃避你的字符串。处理字符串的转义是您希望使用预准备语句的原因之一。相反,只需使用?
来处理字符串参数,让PDO为您完成工作:
$stmt = $pdo->prepare('SELECT * FROM deadfrontier.items WHERE item LIKE ?');
$stmt->execute([$test]);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['item'];
}
答案 1 :(得分:-1)
在这里,您忘记在预准备语句中绑定参数
以下是示例
$stmt = $pdo->prepare('SELECT * FROM deadfrontier.items WHERE item LIKE "?"');
$stmt->bind_param("s", $test); // binding the value
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['item'];
}
请尝试这将适用于您的情况