如何将下面的代码从mysql更改为mysqli

时间:2012-08-10 14:27:26

标签: php mysql database mysqli

在mysql中我有以下代码:

$row = mysql_fetch_assoc($query);
$dbactive = $row['active'];

if ($dbactive == 1){

...

}...

但我必须在我的项目中使用mysqli。所以我尝试在下面更改它,但我不是很正确。任何人都可以帮我纠正mysqli中的以下语句,以便它匹配上面的mysql语句吗?

更新:

我在mysqli的尝试:

   // don't use $mysqli->prepare here
        $query = "SELECT TeacherForename, TeacherSurname, TeacherUsername, TeacherPassword, Active FROM Teacher WHERE TeacherUsername = ? AND TeacherPassword = ? LIMIT 1";
        // prepare query
        $stmt=$mysqli->prepare($query);
        // You only need to call bind_param once
        $stmt->bind_param("ss",$teacherusername,$teacherpassword);
        // execute query
        $stmt->execute(); 
        // get result and assign variables (prefix with db)
        $stmt->bind_result($dbTeacherForename,$dbTeacherSurname,$dbTeacherUsername,$dbTeacherPassword, $dbActive);

            while($stmt->fetch()) {

      if ($teacherusername == $dbTeacherUsername && $teacherpassword == $dbTeacherPassword) {
   if ($dbActive == 1){

        $loggedIn = true;
}
      }

}

4 个答案:

答案 0 :(得分:0)

如果您只返回一行,则不需要while循环。 bind_result()需要x列,并按顺序将它们的值分配给您传入的变量。因此,假设您的结果只包含一行包含一列,bind_result($dbactive)将是相同的作为$dbactive = $row['active']mysql_*

答案 1 :(得分:0)

绑定变量意味着只要您调用 - > gt; fetch(),结果行值就会自动放入该变量中。你贬低了与你的

绑定
$dbactive = $stmt['active'];

$ stmt是一个结果对象,而不是行对象或数组。它不会包含您通过查询提取的任何数据。

答案 2 :(得分:0)

您可以使用查询方法

$result = $myslqi->query($query);
while($row = $result->fetch_object()){
  $row->active …
}

答案 3 :(得分:0)

要获取单行,您可以使用:

if($query = $db->prepare("your sql query where field1=? AND field2=?")){

    $query->bind_param('ss', $user_id); 
    $query->execute();
    $query->bind_result($field1, $field2);
    $query->fetch();
    echo $field1;

}