这是数据库记录的屏幕截图(不介意奇怪的条目,它们用于测试) http://i42.tinypic.com/9uumpc.png
但是当我运行以下查询时,不管是什么,上/下/引号/双引号都返回空。
SELECT * FROM BusDetails WHERE category='$cat'
$ cat =“会计师”
它不会返回任何内容。即使有这样的类别的记录。 我知道它不是我的PHP错误,我尝试在myadmin SQL中运行此查询。
答案 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方法绑定,如图所示。