无法将mysqli连接传递给类

时间:2013-02-04 09:53:52

标签: php mysqli connection

我正在尝试将mysqli连接传递给类,以便使用预准备语句。但是,我遗漏了一些东西而且它无法正常工作。我做错了什么?

以下代码输出“no”

的index.php

$db_host = 'localhost';
$db_name = 'my_database';
$db_user = 'my_user';
$db_password = 'my_password';

$con = new mysqli($db_host,$db_user,$db_password,$db_name);
if (mysqli_connect_errno())
{
    die(mysqli_connect_error()); 
}

$obj = new Obj( $con );

obj.php

Class Obj
{
    public function __construct( mysqli $con )
    {
        $sql = "SELECT * FOM myTable";
        if($con->prepare( $sql ))
        {
            echo "yes";
        }
        else
        {
            echo "no";
        }        
    }
}

2 个答案:

答案 0 :(得分:0)

Class Obj {
  public function __construct( mysqli $con ) {
    $sql = "SELECT * FROM myTable";
    if($con->prepare( $sql ))       //here, u pass $slq before
    {
        echo "yes";
    }
    else {
        echo "no";
    }
  }
}

答案 1 :(得分:0)

如果您未能将mysqli连接传递给您的班级,那么您将在这一行上收到致命错误:

public function __construct( mysqli $con )
                             ^^^^^^

但是不仅构造函数开始运行正常,你甚至可以访问类方法:

if($con->prepare( $sql ))

总而言之,所有发生的事情是mysqli::prepare()返回false,因为准备SQL语句时出错。我不熟悉mysql,但您可能会收到mysqli::$error_listmysqli::$error的确切错误消息:

    if($con->prepare( $slq ))
    {
        echo "yes";
    }
    else
    {
        echo "no: " . $con->error;
    } 

如果SELECT * FOM myTable是实际查询,我认为这是一个简单的语法错误,因为你拼错了FROM