我想使用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()
答案 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 } ?>