$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“
我该如何解决这个问题?
答案 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');