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

时间:2013-06-10 23:42:25

标签: php mysql

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

但是当我运行以下查询时,不管是什么,上/下/引号/双引号都返回空。

SELECT * FROM BusDetails WHERE category='$cat'

$ cat =“会计师”

它不会返回任何内容。即使有这样的类别的记录。 我知道它不是我的PHP错误,我尝试在myadmin SQL中运行此查询。

1 个答案:

答案 0 :(得分:2)

为了学习最佳实践,这里有一个使用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方法绑定,如图所示。