php - 从 php mysql* 到 mysqli

标签 php mysql mysqli

很多人一直告诉我克服 mysql_* 并进入 mysqli 或 PDO。

一开始我选择了 Mysqli,因为它看起来非常相似。

但是,我在转换网站时遇到了问题。

我似乎找不到像这样获取数据的等价物:mysql_result($result, $i, 'COL 2')

下面的代码是现在的样子,但是我似乎无法像使用 mysql_* 那样找到获取数据的方法。

我是这样做的:

<?php 
    $sql="SELECT * FROM items"; 
    $result=mysqli_query($GLOBALS["___mysqli_ston"], $sql); 

     for ($i = $start; $i < $end; $i++) { 
        if ($i == $total_results) { 
            echo ' 
            <div class="col-sm-12 col-lg-12 col-md-12"><h4>Der er ingen produkter at vise</h4></div> 
            '; 
            break; 
        } 
        echo ' 
        <div class="col-sm-4 col-lg-4 col-md-4" style="min-height:425px;"> 
                        <div class="thumbnail"> 
                            <img src="'.mysql_result($result, $i, 'COL 25').'" alt="" style="max-height:300px;"> 
                            <div class="caption"> 
                                <h4 class="pull-right">'.mysql_result($result, $i, 'COL 20').' point</h4> 
                                <h4 style="color:rgb(220,145,27)">'.mysql_result($result, $i, 'COL 2').'</h4> 
                                <p>Vare nr.: '.mysql_result($result, $i, 'COL 14').'</p> 
                            </div> 
                            <div class="buy"> 
                                <form action="" method="POST" name="buy"> 
                                    <!--- <select name="variant" class="form-control"> 
                                        <option>small</option> 
                                    </select><br> --> 
                                    <button class="btn btn-m center-block" type="submit" style="color:white;background-color:rgb(220,145,27);">Køb</button> 
                                </form> 
                            </div> 
                        </div> 
                    </div> 
        '; 
    }; 
    ?> 

最佳答案

简单地说,mysql_result 没有等价物,这意味着您必须重构代码。您可以使用 whileforeach 循环遍历所有行。

<?php
$mysqli = $GLOBALS["___mysqli_ston"];
$sql = "SELECT * FROM items";

if ($result = mysqli_query($mysqli, $sql)) {
    // Query passed, let's continue
    if (mysqli_num_rows($result) > 0) {
        // We have results! Continue
        while ($row = mysqli_fetch_array($query)) {
            echo '<img src="'.$row[24].'" alt="" style="max-height:300px;"><div class="caption"> 
                <h4 class="pull-right">'.$row[20].' point</h4> 
                <h4 style="color:rgb(220,145,27)">'.$row[2].'</h4> 
                <p>Vare nr.: '.$row[4].'</p> 
                </div> ';
        }
    } else {
        echo "No results";
    }
} else {
    echo "Query failed";
}
?> 

您也可以改用 $row['columname'],这样在阅读您实际尝试输出的代码时会更容易。

如果您执意要使用 mysqli_result,您可以创建自己的函数,其功能大致相同 ( from this PHP.net comment )。 (就我个人而言,我会选择上面的示例)。

function mysqli_result($res, $row, $field=0) { 
    $res->data_seek($row); 
    $datarow = $res->fetch_array(); 
    return $datarow[$field]; 
}

无论如何,我强烈建议您不要在全局变量中传递数据库连接,而是包含数据库参数并为每个脚本创建连接。

关于php - 从 php mysql* 到 mysqli,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33916177/

相关文章:

php - 使用 INSERT 和 WHERE 进行 MySQLi 查询,可能吗?

php - 如何检查Mysql时间字段是否为NULL

php - mySQL 查询被搞乱了

php:获取IP地址

php - 我可以在不先选择数据库的情况下使用 Laravel 的 Schema::createDatabase() 吗?

mysql - 一个复杂的 MySQL 查询

php - 选择 COUNT 列和 GROUP BY

php - 有没有办法使用 PHPExcel 检测 excel 文件是在 windows 还是 mac 上生成的?

php - 如何从mysql表中选择数据,然后将其放入html表中

mysql - 连接来自 2 个连续记录集的 2 个值 | MySQL