php中使用mysql_stmt(预处理语句)
来源:互联网 发布:阿里云的cdn怎么用 编辑:程序博客网 时间:2024/06/04 18:00
预处理语句在某些应用场合中显得十分高效和灵活,比如在一些重复查询或批量数据录入中。但是认识一个事物的真面孔往往要经历一番过程,甚至是折磨。尤其对菜鸟们来说,搞清一个概念或排除一个故障,往往要好几个小时甚至好几天的时间,个中滋味自是五花八门啊。
闲话少说,言归正传。本次系统环境是xp,mysql版本5.1,php 5.3,apache 2.2。在这本教材的本例中,不幸的是教材示例竟然是错误的,所以遇到故障只能搜啊搜,历经数时终于受到启发将这个拦路虎给扫平了,原来我的问题是用户权限不足所致!
以下是总结的几个可能遇到的常见故障现象:
错误1:Fatal error: Call to a member function bind_param() on a non-object in...
sql语句错误导致,如:$query = "INSERT INTO products VALUES(?,?,?)";
应该是:$query = "INSERT INTO products(sku,name,price) VALUES(?,?,?)";
错误2:INSERT command denied to user 'sn2010'@'localhost' for table 'products'
用户没有INSERT 权限导致该错误,通过grant增加相应权限后,该故障消除。
( 其他几个故障现象没留意保存记录,现在忘了呵呵)
为了有效避免以上错误,应增加以下判断:
if( $stmt = $mysqli->prepare($query) ) {
...
}else{ echo $mysqli_error;exit();}
下面是完整的测试代码,无误:
......
if(isset($_POST["submit"]))
{
$mysqli = new mysqli('localhost','s2012','s2012','fws');
if ( mysqli_connect_errno()) {
printf ( "Connect failed: %s/n" , mysqli_connect_error ());
exit();
}
$query = "INSERT INTO products(sku,name,price)VALUES(?,?,?)";
$stmt=$mysqli->prepare($query);
if( $stmt = $mysqli->prepare($query) ) {
$stmt->bind_param('ssd',$ss,$nn,$pp);
$skuarray = $_POST['sku'];
$namearray = $_POST['name'];
$pricearray = $_POST['price'];
$x = 0;
while($x < sizeof($skuarray))
{
$ss = $skuarray[$x];
$nn = $namearray[$x];
$pp = $pricearray[$x];
$stmt->execute();
//$stmt->reset();
$x++;
}
}else {
echo $mysqli->error;
exit();
}
$stmt->close();
$mysqli->close();
}
......
- php中使用mysql_stmt(预处理语句)
- LAMP开发精要(13):PHP中使用mysql_stmt(预处理语句)处理select查询结果
- php中mysql预处理语句
- PHP+MYSQL中使用PDO的预处理语句
- PHP的预处理语句的使用
- PHP MySQL 预处理语句
- PHP MySQL 预处理语句
- php中对MYSQL操作之预处理技术(1)数据库dml操作语句
- php中对MYSQL操作之预处理技术(2)数据库dql查询语句
- 使用语句预处理
- php mysql pdo 预处理语句
- php学习笔记(二十三)PDO的预处理语句的查询以及结果集的使用
- php学习笔记(二十三)PDO的预处理语句的查询以及结果集的使用
- java中预处理语句preparedStatement
- 实例 (MySQLi 使用预处理语句)
- PHP PDO 预处理语句与存储过程
- 前端学PHP之PDO预处理语句
- php pdo预处理语句与存储过程
- swfupload 的代码
- C语言常用排序全解
- vs2008 颜色设置
- c#自杀程序的关键方法
- 投的第一份简历
- php中使用mysql_stmt(预处理语句)
- struts2 unit test
- 关于Linux驱动编写时,版本匹配问题的一点经验
- 关于Linux驱动编写时,版本匹配问题的一点经验
- 儿童管理信息及就诊管理系统功能详解
- 吉日嘎拉的梦想 - 做全国最好的后台权限管理系统,提高我们的软件生产率,成为权限标准组件,为软件系统的集成提供咨询服务
- 一步步教你如何用疯狂.NET架构中的通用权限系统 -- 如何控制用户显示的菜单权限
- [原创]VC++下编译出极小的程序
- 能付出爱心就是智,能消除烦恼就是慧。