当前位置: 首页 > 知识库问答 >
问题:

致命错误:对第16行的非对象调用成员函数prepare()

范彭亮
2023-03-14

我在我的网站上有一个注册系统,我正在将我所有的mysql语句更改为PDO语句。当我更改它时,我得到了以下错误:致命错误:对第16行的非对象调用成员函数prepare()

这是我的密码。。。

<?php

include("sql.php");
    require("includes/password.php");

session_start(); //Start session for writing

$errmsg = array(); //Array to store errors

    $noterr = array();

$errflag = false; //Error flag

function UniqueID() {
$UID = rand(); //Create unique ID
$check = $db->prepare('SELECT * FROM `users` WHERE `UID` = :UID'); //line 16

    $UIDarray = array(
        UID => $UID
);

    $check->execute($UIDarray);

php。。。

<?php

ob_start();
session_start();

//database credentials
$dbhost = 'dbhost';
$dbuser = 'dbuser';
$dbpass = 'dbpass';
$dbname = 'dbname';

$db = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>

共有2个答案

冯宪
2023-03-14

PHP中的作用域不是全局的。你的$db-

晏昀
2023-03-14

您的数据库连接-$db-超出范围。看见http://www.php.net/manual/en/language.variables.scope.php

您需要将其添加为函数参数

function UniqueID($db) {
                  ^^^

当你调用函数时

UniqueID($db)

或者将包含放在函数中

function UniqueID() {
    include("sql.php");

或者宣布全球

function UniqueID() {
 global $db
 类似资料: