执行查询时没有结果也没有错误

时间:2012-11-28 00:55:04

标签: php mysql database mysqli

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

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();

1 个答案:

答案 0 :(得分: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();