这是一个数据库记录的截图(不要介意奇怪的条目,它们是用于测试的)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方法绑定值,如所示。