在非对象错误上调用成员函数query()

时间:2012-10-26 08:19:59

标签: php

您好我是php的新手,并尝试创建一个数据库的连接,我正在调用非对象错误的成员函数query():

我的代码分为两个文件,第一个文件包含创建连接的函数:

    <?php 
function dbConnect($usertype, $connectionType = 'mysqli'){
    $host = 'localhost';
    $db = 'phpsols';
    if($usertype == 'read'){
        $user = 'psread';
        $pwd = 'Alexandru&Mada';
    }elseif ($usertype == 'write'){
        $user = 'pswrite';
        $pwd = 'Alexandru&Mada';
    }else{
        exit('Unrecognized connection type');
    }
    if ($connectionType == 'mysqli'){
        return new mysqli($host, $user, $pwd, $db) or die('Cannot open database');
    }else {
        try{
            return new PDO("mysql:host=$host; dbname=$db", $user, $pwd);
    }  catch (PDOException $e){
        echo 'Cannot connect to database';
        exit;
    }
    }
}
?>

在第二个文件中调用此方法,但它也会对非对象上的成员函数query()抛出错误调用:

<?php
require_once ('../includes/connection.inc.php');
$conn = dbConnect('read');
$sql = 'SELECT * FROM images';
$result = $conn->query($sql) or die(mysqli_error()); //error is thrown here
$numRows = $result->num_rows;
?>

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

您需要检查创建连接时是否有错误。将第二部分更改为此代码,显而易见,您必须在第一部分修复错误:

require_once ('../includes/connection.inc.php');

$conn = dbConnect('read');
if(!$conn)
  die;

$sql = 'SELECT * FROM images';
$result = $conn->query($sql) or die(mysqli_error()); //error is thrown here
$numRows = $result->num_rows();

这个问题每天都会在SO上出现几次,有不同的变化。

答案 1 :(得分:0)

用此

替换最后一行
    $numRows = $result->num_rows();