我的网站上有注册系统,并且我将所有的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);
sql.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);
?>
您的数据库连接--$db
超出范围。参见http://www.php.net/manual/en/language.variables.scope.php
您需要将其添加为函数参数
function UniqueID($db) {
^^^
当您调用该函数时
UniqueID($db)
或将include放入您的函数中
function UniqueID() {
include("sql.php");
或声明全局
function UniqueID() {
global $db
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句