我有一个 Web 应用程序,它接受 Excel 电子表格、解析数据并将该数据添加到 MySQL 数据库。有些床单很好,一切都按预期进行。然而,有些工作表在应该返回 true
时却没有返回。在输入数据之前,我有一个通用函数,它将检查该表中的值,然后返回 true
或 false
。这个函数看起来像这样:
//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;
}
}
就像我说的,这有时有效,有时无效,并且我从该表中获得了大量重复值。显然这严重扰乱了我的数据。
起初我认为这与特殊字符有关,但后来我发现该字段没有特殊字符的工作表也有类似的问题。此问题也仅发生在单个列上。在所有情况下,工作表的其他字段都解析得很好。
知道什么可能导致此问题吗?
编辑:我还想指出,如果我将数据复制/粘贴到 MySQL 工作台或命令行中,它确实会返回行。
最佳答案
这看起来很危险,但我确信你正在做某种过滤,对吧? :)
听起来你的一些表或列名称可能是 reserved words ,例如 AS
和 BY
。
在查询中在它们周围打勾:
$sql = "SELECT * FROM `$table` WHERE `$column` = :value;";
关于php - 为什么这个 PHP PDO 函数不从数据库返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26877696/