以下是详细信息: 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()
都没有提供任何输出。你的帮助很有价值。
答案 0 :(得分:1)
此信息对于评论来说太长了,所以我输入这个作为帮助调试案例的答案。
在使用PDO功能时测试每个案例。 prepare
,execute
和fetch
等每项功能都有一个返回值。捕获返回值,分析它并根据返回值执行操作。在适当的位置替换您的信息,并查看执行路径的停止位置。
<?php
$db = new PDO('mysql:host=localhost;dbname=xyz', 'user', 'pass');
gCD('SELECT', $db, 2, 2);
function gCD($query_type,$connection_obj,$u_id,$c_id)
{
if($query_type == 'SELECT')
{
try
{
$prepare_sql = $connection_obj->prepare("SELECT c_n from cs where u_id=:u_id and c_id=:c_id");
if ($prepare_sql === false)
{
echo "PDO prepare failed\n";
return false;
}
$query_select_clients = $prepare_sql->execute(array(':u_id'=>$u_id,':c_id'=>$c_id));
if ($query_select_clients === false)
{
echo "PDO execute failed\n";
return false;
}
echo "\n".$prepare_sql->rowCount();
$g_c_obj = $prepare_sql->fetch(PDO::FETCH_OBJ);
if ($g_c_obj === false)
{
echo "PDO fetch failed\n";
return false;
}
var_dump($g_c_obj);
return true;
}
catch (Exception $e)
{
echo 'Exception: ', $e->getMessage(), "\n";
}
}
else
{
echo 'Not a select statement', "\n";
}
return false;
}
?>