使用“mysql_fetch_row”从数据库中检索结果并使用 PHP 和 mysqli 插入数组?

Posted

技术标签:

【中文标题】使用“mysql_fetch_row”从数据库中检索结果并使用 PHP 和 mysqli 插入数组?【英文标题】:Use "mysql_fetch_row" to retrieve results from database and insert into array using PHP and mysqli? 【发布时间】:2010-10-12 05:44:51 【问题描述】:

我需要从几行中检索数据,然后将结果插入到枚举数组中,这样我就可以使用“for”循环来回显它...

我有这个(我已经连接到数据库):

$genres_sql = 'SELECT genreID FROM genres WHERE imdbID = ?';
if ($stmt->prepare($genres_sql)) 
    // bind the query parameters
    $stmt->bind_param('i', $movieid);
    // bind the results to variables
    $stmt->bind_result($genre);
    // execute the query
    $stmt->execute();
    $stmt->fetch();

在这里,我将第一个结果(行)放入一个变量中。但是我需要将它插入到一个枚举数组中,这样我就可以使用这个来回显每个结果:

if (!empty($genre)) 
for ($i = 0; $i + 1 < count($genre); $i++)

    echo $genre[$i].', '; 

echo $genre[$i];

这将回显:$genre[0], $genre[1], $genre[2], 依此类推,直到最后一个。

我知道mysql_fetch_row 可以完成这项工作,但我是编程新手,所以我需要一个非常详细的解释.. 谢谢!!

【问题讨论】:

【参考方案1】:

我对 mysqli 不是 100% 熟悉,但我玩过很多 pgsql 命令来做这类事情,我认为您正在寻找的是 mysqli-result->fetch_assoc。这将产生一个关联数组,您可以像这样轻松地循环它:

while ($row = $result->fetch_assoc()) 
    printf ($row["genre"]);

编辑:Alnitak 链接到的解释比我在 cmets 中对这个答案的解释更好。

【讨论】:

AFAIK,无法将“fetch_assoc”与“execute”混合使用。前者需要一个“结果集”对象,由“查询”返回,而后者需要一个“语句”对象。 见***.com/questions/627197/…,我试图更充分地探索这种差异【参考方案2】:

您可以使用MySQLi_Statement::fetch 方法循环:

$stmt->bind_result($genre);
$stmt->execute();
$genres = array();
while ($stmt->fetch()) 
    $genres[] = $genre;

基本上fetch 提供了一个迭代器,while 可以使用它来迭代每个结果。 bind_result(在本例中为 $genre)中的变量会在每次迭代时重新分配。

【讨论】:

【参考方案3】:

这并不是问题的真正答案,但如果您想将数组打印为逗号分隔的列表,最好使用implode 命令而不是 for 循环:

//Replaces the for loop in the question
echo implode(', ', $genre);

...除了最后一个元素后面没有逗号。

【讨论】:

【参考方案4】:

只是为了完成@Mykroft 的回复,如果你真的只是想要一个枚举数组,只需使用 $result->fetch_array(MYSQLI_NUM),尽管关联数组在大多数情况下使用起来非常简单。

【讨论】:

以上是关于使用“mysql_fetch_row”从数据库中检索结果并使用 PHP 和 mysqli 插入数组?的主要内容,如果未能解决你的问题,请参考以下文章

从client(content=&quot;&lt;p&gt;&lt;/p&gt;&quot;)中检測到有潜在危急的 Request.Form 值。

如何在firebase中检索子(自动增量)名称

mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别

PHP中mysql_fetch_row()mysql_fetch_assoc()和mysql_fetch_array()的联系

android中检測网络连接状态简单总结

linux环境编程,怎么把mysql表里的数据取出来转化成字符串,用mysql_fetch_row查出来的是列植,我要字段谢