2013年4月10日星期三

谁能告诉我这是为什么??关于预处理

今天学习数据库的事务处理和预处理.
根据参考手册,我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(); ?>

1 条评论:

  1. 终于明白为什么了.原来我的sql语句有问题
    $sql="select id,name,email from 'contacts' where id>?";
    其中contacts 是表名,要用``引起来,而我用的'',所以报错了.

    每次用php处理sql的时候,总把表名/数据库名和字段值需要用的引号搞反.

    回复删除