新手学php,书上一直没有好的例子,网上的也有错误,自己照着php手册写了一个完整点的
高手帮我看一下,有没有哪里写错了...谢谢了
//面向对象
$mysqli = new mysqli("localhost", "user", "pass", "database");  
if(mysqli_connect_errno())) {  //这边判断方式和下面面向过程中的直接判断变量有什么区别?
    printf("Connect failed: %s\n",  mysqli_connect_error());
    exit();
}
$query =  "SELECT `name`, `address`, `phone` FROM Users WHERE gender=? AND age=?";
if($stmt = $mysqli->prepare($query) {
    $stmt->bind_param("si", $gender, $age);  //这边插入参数是不是写在这里?
    $stmt->execute();
    $stmt->bind_result($name, $address, $phone);
    
    while($stmt->fetch()) {
         printf ("%s (%s,%s)<br />", $name, $address, $phone); 
    }
    $stmt->close();
}
$mysqli->close();/面向过程
$mysqli = mysqli_connecti("localhost", "user", "pass", "database");
if(!$mysqli) {
    printf ("Connect failed: %s\n",  mysqli_connect_error());
    exit();
}
$query =  "SELECT `name`, `address`, `phone` FROM Users WHERE gender=? AND age=?";
if ($stmt = mysqli_prepare($query)){
    mysqli_stmt_bind_param($stmt, "si", $gender, $age);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_bind_result($stmt, $name, $address, $phone);
    
    while (mysqli_stmt_fetch($stmt)) {
        printf ("%s (%s,%s)<br />", $name, $address, $phone); 
    }
    mysqli_stmt_close($stmt);
}
$mysqli_close();

解决方案 »

  1.   

    逛逛官网,很多例子,最好的老师
    http://php.net/manual/en/book.mysqli.phphttp://php.net/manual/en/mysqli.construct.php
      

  2.   

    有没有问题,运行下就知道了。比如第20行是注释?第21行 mysqli_connecti()?
      

  3.   

    2楼说的对,你运行就知道了,有错的话你就一段一段,加上exit();慢慢调试,看返回的值是不是TRUE。 
    最好是先确定能连接了,在进行调试后面的代码
      

  4.   

    if(mysqli_connect_errno())) 这里多了一个“)”括号。
      

  5.   

    if($stmt = $mysqli->prepare($query)这里少个括号