Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当涉及WHERE语句时,涉及VARCHAR的PHP PDO SELECT SQL不起作用_Php_Sql_Pdo - Fatal编程技术网

当涉及WHERE语句时,涉及VARCHAR的PHP PDO SELECT SQL不起作用

当涉及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)

添加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);
$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));