-1

我需要将以下内容转换为使用 mysqli 但无法找到示例。有人能帮上忙吗?

    $books = array();

         $books_query = mysql_query("SELECT * FROM book");

         while ($books_row = mysql_fetch_assoc($books_query)) {
           $books[] = array(
             'id'           => $books_row['book_id'],
             'book_title'   => $books_row['book_title']
           );
         }
    return $books;

编辑:

我已经编码了;

$stmt=conn->stmt_init(); 

if($stmt->prepare("SELECT * FROM book")) 
{
   $stmt->execute();
   $stmt->bind_result($r_book_id, $r_book_title); 

   while ($stmt->fetch()) 
   {
        ....
   };
}

但只是不知何故不起作用。

我的问题是我只是从 .net MS SQL 切换到 mySQL 并且需要将 mySQL 转换为 mySQLi

4

2 回答 2

0

正如评论所提到的,理想情况下,我们会看到你到目前为止所尝试的......

你的主要资源是;

http://www.php.net/manual/en/mysqli.quickstart.php

但是,此页面提供了一个很好的教程;

http://codular.com/php-mysqli

对于您的代码;

$books = array();

$db = new mysqli('localhost', 'user', 'pass', 'demo');

if($db->connect_errno > 0){
    die('Unable to connect to database [' . $db->connect_error . ']');
}

$sql = "SELECT * FROM book"

if(!$result = $db->query($sql)){
    die('There was an error running the query [' . $db->error . ']');
}

while($row = $result->fetch_assoc()){
           $books[] = array(
             'id'           => $books_row['book_id'],
             'book_title'   => $books_row['book_title']
           );
}

return $books;
于 2013-02-20T14:29:05.747 回答
0

在你写的代码中:

$stmt->execute();
$stmt->bind_result($r_book_id, $r_book_title); 

根据文档,execute 必须在方法之后bind_result调用。

此外,一旦您调用,您将使用而不是使用数组fetch来访问您的数据。$r_book_id$r_book_title

如果您想要更友好的用户界面,请切换到 PDO。它更容易,并且根据您使用简单或准备好的查询,它没有不同的合成器。

编辑:当你想获取一个数组时,这里是诀窍:

$stmt->bind_result($r['book_id'], $r['book_title']); 
$stmt->execute();
while($stmt->fetch()){
   $totalResult[] = $r;//$r will contain a row as an array
}
//total result is an array with the whole result set
于 2013-02-20T14:58:25.037 回答