【发布时间】:2016-08-29 21:22:14
【问题描述】:
我有一个函数,
这总是返回给我一个错误,即使在我过去查询时在 phpmyadmin 中有一个结果。
我想我的查询有问题,但我不知道是什么。我以前做我的代码做mysql_real_escape_string,然后我转向PDO,他们告诉我应该为转义GET vars做准备,所以我试着去做。
以下是我的查询
public static function getDetailService($param) {
global $bdd;
$detail = $bdd->prepare('SELECT
spb_services.spb_services__name,
spb_services.spb_services__description,
spb_services.spb_services__banner,
spb_services.spb_services__tabs,
spb_services.spb_services__category
FROM spb_services
WHERE spb_services.spb_services__name LIKE :service');
$detail->bindValue(':service', $_GET[$param], PDO::PARAM_STR);
$resultat = $detail->fetchAll(PDO::FETCH_ASSOC);
//var_dump($_GET[$param]);
$detail->debugDumpParams();
$lignes = $detail->fetchColumn();
//var_dump($lignes);
$detail = $detail->fetchAll(PDO::FETCH_ASSOC);
$retour = ($lignes > 0) ? array('status' => 'ok') : array('status' => 'error');
var_dump($retour);
}
当我调用函数时:$service = nosServices::getDetailService('service');
var_dump($_GET[$param]) 的 Var 转储返回给我预期的内容(来自 url)
然后我做了$detail->debugDumpParams();
我在我的本地主机 phpmyadmin 中通过了查询,它返回给我预期的结果,但在使用 PDO 时没有。
我猜有些小问题是错的,但我不知道是什么。
这不会返回错误,但总是错误,好像没有num_rows_result
总结一下麻烦,GET返回了预期的结果,但是当我们去查询时,它没有返回任何结果(除了在我的phpmyadmin复制并粘贴查询)
我们将不胜感激任何帮助
编辑:其他用户按预期完成的修改
【问题讨论】:
-
":service"去掉这里的双引号。在bindValue中,在service之前添加: -
我还有一个错误
-
你错过了
$detail->execute()。您需要在 fetchAll 之前执行查询 -
人们对绑定中的冒号有误解,它只在值中是必需的。自己阅读stackoverflow.com/q/9778887
-
@StanislasPiotrowski 您需要在此处检查错误。所以使用php.net/manual/en/function.error-reporting.php 和php.net/manual/en/pdo.error-handling.php 看看是否有任何结果,除了你没有执行查询。
标签: php mysql pdo phpmyadmin prepare