很多人一直告诉我克服 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
没有等价物,这意味着您必须重构代码。您可以使用 while
或 foreach
循环遍历所有行。
<?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/