今天学习数据库的事务处理和预处理.
根据参考手册,我new了一个$mysqli,写了select语句,调用mysqli的prepare方法,结果却是false.
我看到老师也这样写的,手册也是这样写的,为啥就我这样写不行呢?
<?php
//预处理
$mysqli=new MYSQLi("localhost","root","123456","user") or die(mysqli_error);;
$sql="select id,name,email from 'contacts' where id>?";
//预编译
$stmt=$mysqli->prepare($sql); //prepare返回的是对象(对象存储的是地址)
//var_dump($stmt); //打印出来$stmt是bool(false)
$id=5;
//绑定参数
$stmt->bind_param("i",$id);
//执行
$stmt->execute();
//绑定结果集
$stmt->bind_result($id,$name,$email); //$id等传入的是地址&$id而非值
//取出绑定的值
while($stmt->fetch()){
echo "<br/>--$id--$name--$email";
}
//关闭资源
//释放结果集
$stmt->free_result();
//关闭预编译语句
$stmt->close();
//关闭连接
$mysqli->close(); ?>
终于明白为什么了.原来我的sql语句有问题
回复删除$sql="select id,name,email from 'contacts' where id>?";
其中contacts 是表名,要用``引起来,而我用的'',所以报错了.
每次用php处理sql的时候,总把表名/数据库名和字段值需要用的引号搞反.