Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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
Php Prepared语句不返回任何行_Php_Mysql_Pdo_Prepared Statement - Fatal编程技术网

Php Prepared语句不返回任何行

Php Prepared语句不返回任何行,php,mysql,pdo,prepared-statement,Php,Mysql,Pdo,Prepared Statement,简要版本(不含try's和Catch): 如上述代码所述,fetch()返回false,但如果我使用以下SQL语句手动查询数据库,则返回一行: SELECT * FROM bin_content WHERE LotId="A32"; 我正在绑定$filter对象的属性,因为查询是动态的,这取决于$filter的属性。有没有可能我没有绑定我认为绑定的内容?在使用准备好的语句时,不要引用您希望稍后安全地“注入”到语句中的内容 如果你质疑这一点 "SELECT * FROM table WHERE

简要版本(不含try's和Catch):

如上述代码所述,
fetch()
返回
false
,但如果我使用以下SQL语句手动查询数据库,则返回一行:

SELECT * FROM bin_content WHERE LotId="A32";

我正在绑定
$filter
对象的属性,因为查询是动态的,这取决于
$filter
的属性。有没有可能我没有绑定我认为绑定的内容?

在使用准备好的语句时,不要引用您希望稍后安全地“注入”到语句中的内容

如果你质疑这一点

"SELECT * FROM table WHERE user = 'some-user'" 
它将字面上查找具有该名称的用户,这就是为什么它在查询数据库时字面上查找users“:lot”

改用

"SELECT * FROM table WHERE user = :user_name"

bindParam->(':user_name', $var);

->execute ();

现在,它将安全地将$var注入到准备好的语句中,然后您可以执行它

删除
“:lot”
周围的引号您因为一些奇怪的原因使用了双引号,
在您的准备中。你两个都不需要。@N.B.还有肖恩,原因其实并不奇怪。这是我第一次尝试准备好的陈述。Noob错误:)你们也可以从中得到一些好处(这可能有助于未来的noob)。发布一些答案,我会投票并选择。这是一个常见的错误,我个人同意你只是纠正它:)
"SELECT * FROM table WHERE user = :user_name"

bindParam->(':user_name', $var);

->execute ();