我在运行PDO查询时遇到一些问题。 我试图从搜索表单中获取具有匹配条件的数据库条目的数量。查询什么都不返回。 $ query-> errorInfo()打印HY093错误。会话变量确实已设置,我已经检查过,并且数据库中确实存在与会话值匹配的条目。
$_SESSION["searchfield"] = $_POST["searchfield"];
$_SESSION["searchtype"] = $_POST["searchtype"];
//connection comes from an included file.
$query=$connection->prepare("SELECT COUNT(*) AS count FROM vendor WHERE :searchby = :searchcriteria");
$query->bindValue(":searchby", $_SESSION["searchtype"]);
$query->bindValue(":searchcriteria", $_SESSION["searchfield"]);
$query->execute();
$countid=$query->fetch(PDO::FETCH_ASSOC);
我的语法中找不到任何错误。它没有过滤效果很好:
$query=$connection->query("SELECT COUNT(*) AS count FROM vendor");
$countid=$query->fetch(PDO::FETCH_ASSOC);
非常感谢任何帮助。
修改
@GolezTrol,好像这可能是问题,谢谢。
答案 0 :(得分:-2)
试试这个
$_SESSION["searchfield"] = $_POST["searchfield"];
$_SESSION["searchtype"] = $_POST["searchtype"];
//connection comes from an included file.
$query=$connection->prepare("SELECT COUNT(*) AS count FROM vendor WHERE ".$_SESSION["searchtype"]." = :searchcriteria");
$query->bindValue(":searchcriteria", $_SESSION["searchfield"]);
$query->execute();
$countid=$query->fetch(PDO::FETCH_ASSOC);
编辑:改变是大胆的,因为有人问的是改变在哪里 $ query = $ connection-> prepare(“SELECT COUNT(*)AS count FROM vendor WHERE”。$ _ SESSION [“searchtype”]。“=:searchcriteria”);