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

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

最近担心SQL注入,改变了SQL的写法,用PDO的预处理遇到点问题

首先说我的文件结构:

--conn.php 数据库连接写在这里

--login.php 登陆界面

--aaa.php 登陆后的某页面

一、conn.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];

}

等等自定义函数。。。

?>

二、在登陆界面用预处理,没一点问题,示例如下:

//打开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的具体代码如下:

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它实现?

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值