迭代mysql数组并分配给变量

时间:2015-01-04 23:29:13

标签: php mysql arrays

在PHP中,如何在成长代码中编写以下内容(pref Objected Oriented)? 我无法掌握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]中将结果显示在表格中。

感谢。

2 个答案:

答案 0 :(得分:1)

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

$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'];
}

如果您需要为未经硬编码的查询添加参数,则应阅读有关预准备语句的信息,尤其是在您处理用户输入时。

答案 1 :(得分:1)

除了已经正确的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
}