当涉及WHERE语句时,涉及VARCHAR的PHP PDO SELECT SQL不起作用
添加WHERE语句时,select语句不起作用 以下代码返回一些内容:当涉及WHERE语句时,涉及VARCHAR的PHP PDO SELECT SQL不起作用,php,sql,pdo,Php,Sql,Pdo,添加WHERE语句时,select语句不起作用 以下代码返回一些内容: $sql = "SELECT * FROM statement"; $stmt = $dbconn->prepare($sql); $stmt->execute(array(':words'=>$words)); 但这并不是: $sql = "SELECT * FROM statement WHERE words='(:words)'"; $stmt = $dbconn->prepare($sql)
$sql = "SELECT * FROM statement";
$stmt = $dbconn->prepare($sql);
$stmt->execute(array(':words'=>$words));
但这并不是:
$sql = "SELECT * FROM statement WHERE words='(:words)'";
$stmt = $dbconn->prepare($sql);
$stmt->execute(array(':words'=>$words));
我不知道为什么。您可能认为这是因为没有语句对象的words元素等于$words,但有。。。我可以使用第一个代码运行此循环:
foreach ($stmt as $s)
{
var_dump($words, $s['words'], ($words==$s['words']));
echo "<br>";
}
那怎么办?我不知道为什么这不起作用。如果我正在做一些非常愚蠢的事情,请告诉我。您可以尝试以下方法: $sql=SELECT*FROM语句,其中单词位于“:words”; $statement->executearray':words'=>$words 如果在单个报价中使用,则不会给出结果
谢谢根据PDO作品,您的参数可能不需要额外的撇号。PDO将根据变量的类型自动工作。因此,这将很好地工作
$sql = "SELECT * FROM statement WHERE words=:words";
$stmt = $dbconn->prepare($sql);
$stmt->execute(array(':words'=>$words));
那是什么:单词?你从哪儿弄来的?为什么不使用正确的语法?为什么不直接将变量放入sql查询?这很难吗?@Kaii因为这会破坏使用PDO准备的语句和防止SQL注入的整个想法吗?@YourCommonSense竖起大拇指。。我没看见。。你们说得对。至少给出了否决票的理由,这样人们就可以理解他所说的错误;
$sql = "SELECT * FROM statement WHERE words=:words";
$stmt = $dbconn->prepare($sql);
$stmt->execute(array(':words'=>$words));