使用MySQLi从数据库中获取数据

时间:2017-06-22 11:43:55

标签: php mysql mysqli

我想使用MySQLi从数据库中获取数据。但我有一个错误。请查看我的代码并提供改进建议。

config.php中的代码:

   public function select_data_from_db($table_name ,$run){
   $stmt=$run->prepare("SELECT * FROM ".$table_name); 
   $stmt->execute();
   $result = $stmt->get_result();
   $total_count=$result->num_rows;
   $result= array();
  if($total_count>0){
  while ($row = mysqli_fetch_array($query)) {
  $result[] = $row;
  }
  }
  return $result;
 }

index.php中的代码:

    <?php
   $myrow=$obj->select_data_from_db("home_slider"); ?>
  <tr>
  <td><?php echo  $myrow['id']; ?> </td>
  <td><?php echo  $myrow['title']; ?> </td>
  <td><?php echo  $myrow['description']; ?> </td>
  </tr>

我得到的错误:

警告:缺少main :: select_data_from_db()的参数2,在第24行的D:\ Xampp \ htdocs \ admin \ slider_fetch_data.php中调用,并在D:\ Xampp \ htdocs \ admin \ config.php中定义113

注意:未定义的变量:第115行的D:\ Xampp \ htdocs \ admin \ config.php中的conn

致命错误:在第115行的D:\ Xampp \ htdocs \ admin \ config.php中调用null上的成员函数prepare()

2 个答案:

答案 0 :(得分:0)

在您发表评论yeah ...first error is gone..thanks:)之后,您的代码仍有问题。

第一次$result[] = $record;您需要将$row推送到数组而不是$record

 $result[] = $row; 

2nd :函数将返回你需要循环的数组,以获得每一行

第三次:从$索引

中删除array符号
<?php
   $myrow=$obj->select_data_from_db("home_slider");
 ?>

  <?php if(count($myrow)>0){ 
            foreach($myrow as $row){ ?>
   <tr>
  <td><?php echo  $row['id']; ?> </td>
  <td><?php echo  $row['title']; ?> </td>
  <td><?php echo  $row['description']; ?> </td>
 </tr>
 <?php } }

?>

第4次:使用预准备语句来避免sql注入

public function select_data_from_db($table_name,$conn)
{

      $stmt=$conn->prepare("SELECT * FROM ".$table_name); 
      $stmt->execute();
      $result = $stmt->get_result();
      $total_count = $result->num_rows;
      $result = array();
      if($total_count>0)
      {
        while ($row = mysql_fetch_array($query)) {
            $result[] = $row;
        }
      }

      return $result;
 }
  

警告mysql_query,mysql_fetch_array,mysql_connect等..扩展名   在PHP 5.5.0中已弃用,并且已在PHP 7.0.0中删除。   相反,应该使用MySQLi或PDO_MySQL扩展。

答案 1 :(得分:0)

首先,您应该从服务器建立连接。我们正在使用 mysqli_connect 。例如,下面的例子,

private $host = "localhost";
private $user = "root";
private $password = "";
private $database = "DB_NAME";
private $conn;

function connectDB(){
$conn =    mysqli_connect($this->host,$this->user,$this->password,$this->database);
return $conn;
}

public function select_data_from_db($table_name){
$query=mysqli_query($this->conn,"SELECT * FROM ".$table_name); 
$result = array();
while ($row = mysqli_fetch_array($query)) {
$result[] = $row;
}
return $result;
}

index.php中的代码仅显示单一记录

<?php
$myrow=$obj->select_data_from_db("home_slider");?>
<tr>
<td><?php echo  $myrow['id']; ?> </td>
<td><?php echo  $myrow['title']; ?> </td>
<td><?php echo  $myrow['description']; ?> </td>
</tr>

index.php的代码多记录显示代码

<?php
$myrow=$obj->select_data_from_db("home_slider");
foreach($myrow as $key)
?>
<tr>
<td><?php echo  $key['id']; ?> </td>
<td><?php echo  $key['title']; ?> </td>
<td><?php echo  $key['description']; ?> </td>
</tr>
<?php } ?>