为什么这个PHP PDO函数不能从数据库中返回值?

我有一个Web应用程序接受Excel电子表格,分析数据,并将数据添加到MySQL数据库。 一些床单很好,一切按预期工作。 但是有些纸张在他们应该的时候没有返回。 在input数据之前,我有一个通用函数,它将检查该表的值,然后返回truefalse 。 这个函数看起来像这样:

 //Check if a sql will return with any values function tableCheck($table, $column, $value){ //PDO Connecttion $core = Core::getInstance(); $sql = "SELECT * FROM $table WHERE $column = :value;"; //Create a prepared statement $stmt = $core->dbh->prepare($sql); $stmt->bindParam(':value', $value, PDO::PARAM_STR); $stmt->execute(); //return true if there is a hit on that value if($stmt->rowCount() > 0){ return true; } else { return false; } } 

就像我说的那样,一些时间和一些时间不工作,我从工作表中得到了大量的重复值。 显然这严重混淆了我的数据。

起初我以为它必须做特殊的字符,但我从那里find这个字段没有特殊字符的表具有类似的问题。 此问题也只出现在单个列上。 在所有情况下,表单的其他字段都可以很好地parsing。

任何想法是什么可能导致这个问题?

编辑:我也想注意到,如果我复制/粘贴到MySQL工作台或命令行的数据,它不会返回行。

这看起来很危险,但我相信你正在做某种过滤,对吧? 🙂

听起来像你的一些表或列名可能是保留字 ,例如ASBY

在你的查询中加上勾号:

 $sql = "SELECT * FROM `$table` WHERE `$column` = :value;"; 

问题是input的数据比字段接受的大。 该列是一个VARCHAR,并且传入的数据大于255个字符。 我切换到一个TEXT数据types,问题解决了。