【发布时间】:2015-12-24 10:06:28
【问题描述】:
以下是详细信息: 1. PDO连接类,具有与DB连接的功能。说 PDO_connect 类。 2. 逻辑类文件说MyLogic文件,MyLogic文件包括PDO_connect和另一个写函数的类说MyFunction Class。
问题: 我无法使用以下查询执行选择查询和获取对象。 MyFunction 类有功能:
function gCD($query_type,$connection_obj,$u_id,$c_id)
{
if($query_type == 'SELECT')
{
$prepare_sql = $connection_obj->prepare("SELECT c_n from cs where u_id=:u_id and c_id=:c_id");
$query_select_clients = $prepare_sql->execute(array(':u_id'=>$u_id,':c_id'=>$c_id));
echo "\n".$prepare_sql->rowCount();
exit; //This is also not working.
$g_c_obj = $prepare_sql->fetch(PDO::FETCH_OBJ);
var_dump($g_c_obj);
}
}
所有参数都从 MyLogic 文件、连接和其他详细信息传递。 如果我进行此调试,它会返回 true:
var_dump($prepare_sql->execute(array(':u_id'=>$u_id,':c_id'=>$c_id)))
但是rowCount() 和fetch() 都没有给出任何输出。您的帮助非常宝贵。
【问题讨论】:
-
尝试从 phpmyadmin 对数据库执行查询。它是否返回任何值?
-
是的,它在 DB 上执行时提供 2 行作为输出。
-
你必须自己做一些其他的测试。你能创建一个
php file,只有连接和一个代码来选择这个值并绑定参数吗?另外,如果您将此查询替换为值并在不需要绑定它们的情况下运行会发生什么? -
您还应该检查调用
fetch的结果。调用成功了吗?您还可以在 MySQL 常规日志中检查这些调用。参数是否符合您的预期? -
来自
PDOStatement::rowCount()的手册:“如果关联的 PDOStatement 执行的最后一条 SQL 语句是 SELECT 语句,则某些数据库可能会返回该语句返回的行数。但是,这种行为是不能保证适用于所有数据库,并且不应依赖于可移植应用程序。"