2

我有下一个php代码:

<?php
      mysqli_report(MYSQLI_REPORT_ALL);
      $mysqli = new mysqli("localhost","mybd","mypass");
      if ($mysqli->connect_errno) { echo "Error connect<br/>"; }
      else {
            $mysqli->select_db("database1");

            if ($result = $mysqli->query("SELECT DATABASE()")) {
                $row = $result->fetch_row();
                printf("Default database is %s.\n", $row[0]);  // shows correct database selected
                $result->close();
            }

            $sentencia = $mysqli->prepare("select pass from users Where name ='ronald'");

            echo "Prepare error:".$mysqli->error."<br/>";

            if (!$sentencia) echo "<br/>sentencia is null<br/>";

            if ($sentencia->execute)
            {
                 $sentencia->bind_result($cpass);
                 $sentencia->fetch();
                 echo "Passwd:".$cpass."<br/>";    
                 $con="checkpass"; 
                 if (($con!=$cpass) && (md5($con)!=$cpass))
                 {
                      echo "OK<br/>";
                 }
                 else echo "NO OK<br/>";
            }
            else echo "<br/>Error execute: ".$mysqli->error;
     }
     mysqli_report(MYSQLI_REPORT_OFF);
 ?>

问题是: - $mysqli->error 什么也没显示。没有错误。始终为空字符串。- $sentencia->execute 总是返回 null,然后总是回显“错误执行:”,但没有关于错误的信息。

选择的数据库显示正常。它选择正确的数据库。这是一个例子。确实,名称是通过 "$sentencia->bind_param("s",$user);" 传递的 但是有了这个,我得到“没有对象”的apache错误。我不知道为什么会这样。已检查 SQL 并正常。谢谢。

4

1 回答 1

2

执行不应该是函数或属性吗? http://php.net/manual/en/mysqli-stmt.execute.php

if ($sentencia->execute())
{

}
于 2013-04-26T10:36:56.520 回答