关于php用pdo预处理的方式连接数据库,出现错误

最近担心SQL注入,改变了SQL的写法,用PDO的预处理遇到点问题首先说我的文件结构:--conn.php数据库连接写在这里--login.php登陆界面--aaa.ph... 最近担心SQL注入,改变了SQL的写法,用PDO的预处理遇到点问题
首先说我的文件结构:
--conn.php 数据库连接写在这里
--login.php 登陆界面
--aaa.php 登陆后的某页面

一、conn.php中我是这么写的:
<?php
//数据库信息
define('DB_NAME', 'DB3');
define('DB_USER', 'root');
define('DB_PASSWORD', '4512345114');
define('DB_HOST', '211.333.221.215');
define('DB_CHARSET', 'utf8');
//数据库连接
try {
$DBH = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD);
$DBH->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
$DBH->exec('SET CHARACTER SET '.DB_CHARSET);
$DBH->exec('SET NAMES '.DB_CHARSET);
} catch (PDOException $e) {
die();
}
//下面全是自定义函数
function shouru_all(){

$stmt = $DBH->prepare("select (ifnull(count(*),0)+1)*1000 shouru_all FROM aq_orderqueue where money_50= ?");
$stmt->execute(array("50"));
$rs = $stmt -> fetch();

return $rs[shouru_all];
}

等等自定义函数。。。
?>

二、在登陆界面用预处理,没一点问题,示例如下:
<?php
//打开session,载入conn.php
session_start();
include("conn.php");
//用预处理执行校验用户名和密码
$stmt = $DBH->prepare("select *,a.uid,a.login_date from aq_user a where a.login_id= ? and a.pwd= ? and manager>=0");
$stmt->execute(array(@$login_id,@$pwd));
$rs=$stmt->fetch();
$num=$stmt->rowCount();

///等等等等
?>

三、在aaa.php页面里用了个上面的自定义函数shouru_all(),结果不能用,提示Fatal error: Call to a member function prepare() on a non-object in D:\wamp\www\conn.php on line 41
aaa的具体代码如下:
<?php
session_start();
include("chksql.php");
include("conn.php");
header('Content-type: text/html;charset=utf-8');

//注:shouru_all()函数写在conn.php里
echo "当前总收入为:".shouru_all();
?>

请问如何解决,采用这种连接PDO连接的话,是不是不可以像以前那样只在conn里写上连接,别的文件来include它实现?
展开
 我来答
匿名用户
2015-10-26
展开全部
加global $DBH;呢
追问
你说是因为$DBH作用域的问题?我觉得也可能是,但是global 没用过,怎么加?

最上面加了一行 global $DBH;
仍然提示这个。
追答
在shouru_all中加
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式