Mysql查询和$ con

时间:2013-11-18 21:10:56

标签: php mysql sql

$query = "SELECT id, firstname, lastname, username FROM users ORDER BY id desc";
$stmt = $con->prepare( $query );
$stmt->execute();

当我为我的CRUD单页面应用程序运行上面的代码时,我会在我的网页上获得一个返回:

  

“注意:未定义的变量:con in   第7行的C:\ xampp \ htdocs \ contactlist \ read.php

     

致命错误:在非对象中调用成员函数prepare()   第7行的C:\ xampp \ htdocs \ contactlist \ read.php“

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

此消息:

  

注意:未定义的变量:第7行的C:\ xampp \ htdocs \ contactlist \ read.php中的con

这意味着您的代码中未定义$con。在准备查询之前,您是否做过类似的事情:

$con = new mysqli("example.com", "user", "password", "database");
if ($con->connect_errno) {
    echo "Connection failed to MySQL : (" . $con->connect_errno . ") " .    $con->connect_error;
}

现在,这个错误:

  

致命错误:在第7行的C:\ xampp \ htdocs \ contactlist \ read.php中的非对象上调用成员函数prepare()

表示如果prepare不存在,则无法调用$con的成员函数。

答案 1 :(得分:0)

您需要在运行任何SQL查询之前创建数据库连接

$con = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

您可以在PHP文档中找到开始结束示例:http://php.net/manual/en/mysqli.prepare.php

答案 2 :(得分:0)

使用PDO可以像这样定义$ con

class db {
    public static function dbFactory($host, $dbase, $user, $pass) {
        $pdo = new PDO("mysql:host=$host;dbname=$dbase", $user, $pass);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);        
        return $pdo;
    }
}
$con = db::dbFactory('localhost','mydbname','myusername','mypassword');