在自定义函数里面,为什么不能使用$mysqli->query?

MCXCI}8`AS6FQ6ZJ7TUW)%H.png

提问者别闹i提问时间:2017-09-15 11:19我来回答
1回答
Peter Zhu
回复Peter Zhu赞同11星期前

你的使用有问题呀~~

$mysqli->query()使用的前提是:你创建了$mysqli对象,不知你在dbconfigs.php文件中有没有创建这个对象?

还有,你在下面又用了mysqli_fetch_array()这是典型的面向对程的语句,实在不明白,你究竟想怎么调用数据?

如果你想使用面向对象,请这样使用:

$mysqli = new mysqli($host,$userName,$password,$dbName);
if ($mysqli->connect_errno){
    die('Error Connected'.$mysqli->connect_error;
}
$result = $mysqli->query('SELECT * FROM table_name');
if ($result && $result->num_rows > 0){
while($row = $result->fetch_array(MYSQLI_ASSOC)){
   //输出数据
 }
 $result->free_result();
}
$mysqli->close();

如果是面向过程,请将以上代码修改一下:

$conn = mysqli_connect($host,$userName,$password,$dbName);
if (mysqli_connect_errno($conn)){
    die('Error Connected'.mysqli_connect_error($conn);
}
$result = mysqli_query('SELECT * FROM table_name');
if ($result && mysqli_num_rows($conn,$result) > 0){
while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){
   //输出数据
 }
 mysqli_free($result);
}
mysqli_close($conn);

请不要将面向对象和面向过程混用。

PHP中文网有针对这二部分的教程:

http://www.php.cn/course/653.html (MySQLi面向对象)

http://www.php.cn/course/653.html (MySQLi面向过程)

  • 别闹i
    $mysqli=new mysqli("localhost","root","root","perform_file") or die("链接数据库失败"); $mysqli->query("set names utf8"); //这就是dbconfigs.php里面的配置 mysqli_fetch_array //这不是把查询出来的结果集通过数组循环出来吗?
  • Peter Zhu
    mysqli_fetch_array()是将结果集逐条的转为数组输出,包括索引与关联
  • 别闹i
    请问dbconfigs.php里面的配置有问题吗?