Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP5 Mysqli类未输出数据_Php_Oop_Mysqli - Fatal编程技术网

PHP5 Mysqli类未输出数据

PHP5 Mysqli类未输出数据,php,oop,mysqli,Php,Oop,Mysqli,所以我正在尝试创建一个备份类,这就是我目前所拥有的。问题是$tbl_数据为空。我做错了什么 已成功连接到数据库 如果没有“echo$tbl_data”,则“$current_table-current table”输出是正确的,但如果使用了“echo$tbl_data”,则只显示第一个表(首先尝试备份两个表) mBackup类{ private$_connection=“”;//数据库连接变量 private$output=“”;//sql输出 私人$tbl_数据=”; 私人$tbl_row=“

所以我正在尝试创建一个备份类,这就是我目前所拥有的。问题是$tbl_数据为空。我做错了什么

已成功连接到数据库

如果没有“echo$tbl_data”,则“$current_table-current table”输出是正确的,但如果使用了“echo$tbl_data”,则只显示第一个表(首先尝试备份两个表)

mBackup类{
private$_connection=“”;//数据库连接变量
private$output=“”;//sql输出
私人$tbl_数据=”;
私人$tbl_row=“”;
私有$nfields=“”;
私有$create_table_query=“”;
私有$create_table_output=“”;
公共函数构造($dbhost、$dbname、$dbuser、$dbpassword){
$this->_connection=newmysqli($dbhost、$dbuser、$dbpassword、$dbname);
//可能的连接错误
如果($this->\u connection->connect\u errno){
echo“未能连接到数据库”;
}
否则{
回声“已连接
”; } } 公共功能备份_db(){ //从数据库中获取表名并存储在数组中 $result=$this->_连接->查询(“显示表”); //获取表名 而($row=$result->fetch_row()) { $table_names[]=$row[0]; } //每张桌子 foreach($table\u名称为$current\u table) { echo$current_table.“-当前表
”;//调试 $tbl_data=“”; $tbl_row=“”; $nfields=“”; $create_table_query=“”; $create_table_output=“”; //从正在使用的表中选择所有内容 $query=$this->_connection->prepare(“选择*FROM?”); $query->bind_参数('s',$current_table); $query->execute(); $query->bind_结果($tbl_数据); $query->fetch(); 回显$tbl_数据。“
”; } }
尝试以下方法:

while ($query->fetch()) {
     echo $tbl_data;
}
我知道的很少,bind_result将结果集中的列绑定到变量。如果您的表有5列,您应该有bind_result($var1,$var2,$var3,$var4,$var5)但由于您的列数将根据表的不同而变化,我不知道bind_result是否能满足您的需要

尝试在每次循环后关闭准备好的语句

$query->close();
或者重置

$query->reset()

不能使用?作为表名。有关标记的允许位置,请参见中的第二个注释。因此,您必须使用普通变量插值构造查询:

$select = sprintf("SELECT * FROM `%s`", $current_table);
$result = $this->_connection->query($select);

是否至少已“连接”?是和$current_table-current table输出。请尝试关闭准备好的语句或重置
$select = sprintf("SELECT * FROM `%s`", $current_table);
$result = $this->_connection->query($select);