MySQL数据库记录存在,但没有返回


MySQL database record exists, but does not return

这是一个数据库记录的截图(不要介意奇怪的条目,它们是用于测试的)http://i42.tinypic.com/9uumpc.png

但是当我运行以下查询无论什么,上/下/引号/双引号它返回空。

SELECT * FROM BusDetails WHERE category='$cat'

$cat = "Accountants"

它不返回任何东西。尽管有这样的分类记录。我知道这不是我的PHP错误,我试着在myadmin SQL中运行这个查询。

为了学习最佳实践,这里有一个使用PDO (PHP数据对象)与数据库交互的示例。

//Make a connection to your database.
$dbh = new PDO('mysql:host=localhost;dbname=<YOURDB>', '<USERNAME>', '<PASSWORD>');
$cat = "Accountants";
$STH = $dbh->prepare("SELECT * FROM BusDetails WHERE category = :cat");
$STH->bindParam(":cat", $cat); //This binds your parameter and replaces :cat 
                               //with the value of $cat escaped
$STH->setFetchMode(PDO::FETCH_ASSOC);
$STH->execute();
while($row = $STH->fetch()) {
    //interact with results here
}

这将允许您执行您提供的查询以及转义任何可能导致注入的字符(参见Bobby Tables)。如果$cat被分配给用户给出的值(例如搜索词),该代码将按原样工作。

如果您的查询需要额外的参数(我认为它们会),您可以简单地在查询中添加额外的:param占位符,并使用bindParam方法绑定值,如所示。