遍历 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
}
在 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
}