0

在 php/mysql 方面,我似乎有点老派,老实说只是习惯了它,但现在我一直被告知使用mysqli而不是mysql,所以我一直在阅读一些帖子/文章以及包括 php.net 在内的关于它的内容,但对我来说没有任何意义,所以想也许如果有人能给我一个相当于我的片段的内容,我可能会开始更好地理解它......

这是一个简单的 mysql while 循环:

$query  = "SELECT * FROM foo ORDER BY id DESC LIMIT 10, 10";
$result = mysql_query($query);

while ($row = mysql_fetch_array($result)) {

$dog = $row['dog'];

  echo $dog;

}
4

3 回答 3

1

mysqli在程序样式中使用的等价物是:

$link = mysqli_connect("localhost", "user", "pass", "db");
$query = "SELECT * FROM foo ORDER BY id DESC LIMIT 10, 10";
$result = mysqli_query($link, $query) or die(mysqli_error($link));

while($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
    $dog = $row['dog'];
    echo $dog;
}

mysqli_free_result($result);
mysqli_close($link);
于 2012-09-05T01:11:43.620 回答
1

尝试这个:

$query = "SELECT * FROM foo ORDER BY id DESC LIMIT 10, 10";
$result = mysqli_query($query) 或死 (mysqli_error());

而 ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {

$dog = $row['dog'];

  回声$狗;

}
于 2012-09-05T01:11:45.430 回答
1

mysqli 有两种不同的接口,一种与老式 mysql 接口非常相似,另一种是面向对象的。

面向对象的版本是这样工作的:

/* establish connection */
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo $mysqli->connect_error;
    return;
}

/* query & fetch-loop */
$result = $mysqli->query("SELECT * FROM foo ORDER BY id DESC LIMIT 10, 10");
if (!$result) {
    echo $mysqli->error;
    return;
}
while ($row = $res->fetch_assoc()) {
    $dog = $row['dog'];
    echo $dog;
}

如您所见,代码长度与旧样式版本大致相同(只需忽略错误检查和打开连接)。

顺便说一句:mysqli 文档还不错,您只需跳过第一页,因为这一页真的很奇怪。我将从这里开始:http ://www.php.net/manual/en/mysqli.quickstart.connections.php 。

于 2012-09-05T01:22:01.260 回答