Php Ajax消息显示问题
我想我已经解决了这个问题,它与PDO的绑定参数有关,而不是将值包含在select语句中 现在谷歌搜索如何绑定数组值,其中每个查询类型的数组值的数量是可变的。例如,可能需要一个、两个或三个类别(col)值 我的主脚本向辅助脚本提交ajax请求 在大多数情况下,发送和接收两个参数。 服装部:男士时装,类别:外套和夹克 在除少数情况外的所有情况下,ajax查询都是成功的,并按预期返回。但是,对于某些参数对,页面或控制台中不显示任何内容 在生成查询后立即从查询脚本返回,我知道查询总是正常工作。(复制并粘贴到phpMyAmdin中可以得到正确的结果集。) 因此,脚本的关键部分似乎是fetch例程。如何在下一行中捕获来自PDO的错误消息Php Ajax消息显示问题,php,ajax,Php,Ajax,我想我已经解决了这个问题,它与PDO的绑定参数有关,而不是将值包含在select语句中 现在谷歌搜索如何绑定数组值,其中每个查询类型的数组值的数量是可变的。例如,可能需要一个、两个或三个类别(col)值 我的主脚本向辅助脚本提交ajax请求 在大多数情况下,发送和接收两个参数。 服装部:男士时装,类别:外套和夹克 在除少数情况外的所有情况下,ajax查询都是成功的,并按预期返回。但是,对于某些参数对,页面或控制台中不显示任何内容 在生成查询后立即从查询脚本返回,我知道查询总是正常工作。(复制并粘
$filtered_results = $filtered_statement->fetchAll(PDO::FETCH_ASSOC);
$debugInfo = array('debug' => vsprintf(str_replace("?", "%s", $filtered_statement->queryString), $opts ));
[编辑]
if ( is_array($filtered_results) ) {
$filtered_results = array_merge($debugInfo, $filtered_results);
} else {
$filtered_results = $debugInfo;
}
[/edit]仅当查询成功时,才会返回调试信息
$filtered_results_json = json_encode($filtered_results);
echo( $filtered_results_json );
请告诉我一个解决方案,失败的查询将显示在调用脚本中。所需的数据在数据库中,因此我仍然无法显示故障消息。您需要检查是否返回了数组。如果未找到任何内容,则不会返回任何数组-并且您不能使用array\u merge
$filtered_results = $filtered_statement->fetchAll(PDO::FETCH_ASSOC);
$debugInfo = array('debug' => vsprintf(str_replace("?", "%s", $filtered_statement->queryString), $opts ));
if ( is_array($filtered_results) ) {
$filtered_results = array_merge($debugInfo, $filtered_results);
} else {
$filtered_results = $debugInfo;
}
$filtered_results_json = json_encode($filtered_results);
echo( $filtered_results_json );
也可以看到这一点:如果您不知道错误的来源,为什么只共享“脚本的关键部分”?您甚至没有共享您的SQL查询或如何处理ajax调用。这里很难帮忙。但是,如果这是您可以共享的全部内容,并且假设您的ajax调用编写正确,请尝试使用
echo()
和exit()手动调试
在PHP脚本中的不同位置,查看在打印ajax调用success/complete时是否获得预期结果。该脚本适用于提交给它的大多数参数对。我试图得到失败的查询,找出提交的参数出了什么问题,或者其他一些偶尔(尽管一贯)出现错误的东西。这是一个很大的帮助。谢谢现在我可以确定查询是正确的,即使它没有返回任何内容,我认为现在必须与PDO::FETCH例程相关。您也可以使用PDO检查行数,方法是:$filtered_statement->rowCount();不找到任何东西是否可以不是一个技术问题;我想这取决于你的业务环境。