遍历 mysql 数组并赋值给变量

iterate through mysql array and assign to variables

在 PHP 中,如何在成熟的代码中编写以下内容(首选面向对象)? 我只是无法理解 PHP 如何遍历数组。

$result = mysql_query("SELECT name FROM newsletters WHERE ID = '1'");
$result2 = mysql_query("SELECT name FROM newsletters WHERE ID = '2'");
$result3 = mysql_query("SELECT name FROM newsletters WHERE ID = '3'");
etc

$row = mysql_fetch_array($result); 
$row2 = mysql_fetch_array($result2);
$row3 = mysql_fetch_array($result3);
etc

$title1 = $row{'name'};
$title2 = $row2{'name'};
$title3 = $row3{'name'};
etc

理想情况下,我想要结果,它只是显示在表格中的名称,在 $title[x] 中。

谢谢。

我假设您想获取所有时事通讯的名称。如果是这样,您只需要一个查询:

$result = mysql_query('SELECT name FROM newsletters');

如果您想获取特定的时事通讯,您可以在查询中指定 ID:

$result = mysql_query('SELECT name FROM newsletters WHERE ID IN(1, 2, 3)');

您可以使用 while 循环遍历结果中的行:

$titles = array();
while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
  $titles[] = $row['name'];
}

此外,您真的不应该使用 mysql_* 函数。使用 mysqli 或 PDO。这是使用 MySQLi 的等效代码:

//assuming you already have a mysqli connection
$result = $mysqli->query('SELECT name FROM newsletters');
$titles = array();
while( $row = $result->fetch_assoc() ) {
    $titles[] = $row['name'];
}

如果您需要向未硬编码的查询添加参数,您应该阅读准备好的语句,尤其是在处理用户输入时。

除了mtinsley已经正确的答案之外,我简单地添加了另一个例子。 PDO 的实现:

$dbh = new PDO(/*dns*/);
$ids = array(1, 2, 3);
$place_holders = implode(',', array_fill(0, count($ids), '?'));
$sth = $dbh->prepare("SELECT name FROM newsletters WHERE ID IN($place_holders)");
$sth->execute($ids);

while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
  // $title[] = $row['name']; ... or whatever you need to do
}