所以..我正在通过使用CRUD操作编写数据库对象来练习我的PHP。但是,我在从数据库对象返回结果对象时遇到了麻烦。
这是相关的“select_where”函数,它位于db类中,并带有一个指定表名的参数:
function select_where(array $values, $table, $what = "*")
{
$where_stmt = '';
if(count($values)>0)
{
$fields = array_keys($values);
$vals = array_values($values);
if ($what != "*")
{
if(is_array($what)===TRUE)
{
$what = implode($what, ',');
}
else //assume string! -- needs better error handling!
{
//Don;t do anything for now
}
}
$where_stmt = "WHERE ";
for( $i=0 ; $i<count($fields) ; $i++)
{
$where_stmt .= "$field[$i] = '$vals[$i]' AND ";
}
$where_stmt .= "$field[$i] = '$vals[$i]'";
}//else: array is an empty one, meaning SELECT ALL;
$query = "SELECT $what FROM `$table` $where_stmt;";
;
if($result = $this->mysqli_conn->query($query))
{
echo "RESULT:<br />";
print_r($result);
return $result;
}else{
return false;
}
}
print_r函数打印结果对象的属性没有问题。但是当我调用我的函数时,它没有..因此:
$db = new db();
$result = $db->select_all('codes');
print_r($result);
print_r不会打印任何内容......
我100%确定这与我对PHP OOP的工作方式缺乏了解有关;当我在其他地方寻找答案时,我们非常感谢任何建议或解决方案!
看起来我找到了答案:
ROOKIE MISTAKE!
在我的代码中,我使用了辅助函数 $ result = $ db-&gt; select_all('codes');
实际上看起来像这样:
function select_all($table, $what="*" )
{
$empty_array = array();
$this->select_where($empty_array, $table, $what);
}
但是可以看出,这个功能没有回复!所以现在:
function select_all($table, $what="*" )
{
$empty_array = array();
return $this->select_where($empty_array, $table, $what);
}
是解决方案!
再次感谢您