【问题标题】:No result and no error performing a query执行查询无结果且无错误
【发布时间】:2012-11-28 00:55:04
【问题描述】:

一切都很好。数据库和表的名称,列的名称等。 $username 是好的并且存在于数据库中。然而,在此运行之后,如果我“警告”$dbuid,它会显示为 0,而 $dbusername 会显示为空。 MySQLi 不会抛出任何错误。 (这就是为什么我做了 if(! .. ) echo error;,看看它是否会在任何事情上抛出错误,但它工作得很好。)我哪里出错了?

if(!$msmysqli = new mysqli("localhost","root","","ms")){
   echo $msmysqli->connect_error;
}
if(!$stmt = $msmysqli->prepare("SELECT id,name,password FROM accounts WHERE name=?")){
   echo $msmysqli->error;
}
if(!$stmt->bind_param("s",$username)){
   echo $stmt->error;
}
if(!$stmt->execute()){
   echo $stmt->error;
}
if(!$stmt->bind_result($dbuid,$dbusername,$dbpassword)){
   echo $stmt->error;
}
$stmt->close();

【问题讨论】:

    标签: php mysql database mysqli


    【解决方案1】:

    您只需忘记fetch 您的结果即可获得该行...这就是您的代码没有按预期工作的原因!要记住的另一件事是,一个对象,至少在 php 中,总是返回它的实例,同时是constructed!语句 $msmysqli = new mysqli(...) 永远不会是假的!这就是为什么您应该如图所示检查您的连接!

    $msmysqli = new mysqli("localhost","root","","ms");
    
    if ( $msmysqli->connect_errno ) echo $msmysqli->connect_error;
    
    if( $stmt = $msmysqli->prepare("SELECT id,name,password FROM accounts WHERE name=?") ) {
        $stmt->bind_param("s",$username);
        $stmt->execute();
        $stmt->bind_result($dbuid,$dbusername,$dbpassword);
        $stmt->fetch();
        $stmt->close();
    } else {
        echo $msmysqli->error;
    }
    
    $msmysqli->close(); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-02
      • 2017-01-23
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      相关资源
      最近更新 更多