【发布时间】:2010-09-30 13:52:51
【问题描述】:
我可以找到很多教程,向您展示如何将数组加载到数据库字段中,但似乎无法弄清楚如何将字段中的每个条目作为单独的项目拉入数组中。看起来很简单,只是无法让它工作,有什么帮助吗?
【问题讨论】:
-
您能否准确说明您想要什么,因为答案中显然存在一些混淆。我的解释是,您希望从 many 行中提取的 one 字段中的所有值都显示为数组。
我可以找到很多教程,向您展示如何将数组加载到数据库字段中,但似乎无法弄清楚如何将字段中的每个条目作为单独的项目拉入数组中。看起来很简单,只是无法让它工作,有什么帮助吗?
【问题讨论】:
$big_2_dimensional_array_of_data;
foreach ($big_array_of_data as $row) {
$query = "INSERT INTO table_name (field1, field2, ...) VALUES($row[0], $row[1], ...)
mysql_query($query);
}
我认为是这样的
【讨论】:
如果使用现代 PDO 库,请使用 PDOStatement->fetchAll() 函数并将 fetch_style 参数设置为 PDO::FETCH_COLUMN。
基于该页面的示例:
$sth = $dbh->prepare("SELECT field FROM dbtable");
$sth->execute();
$array = $sth->fetchAll(PDO::FETCH_COLUMN);
如果使用旧的 MySQL API(不推荐,示例省略错误检查)
$array = array();
$result = mysql_query("SELECT field FROM dbtable");
while ($row = mysql_fetch_row($result)) {
$array[] = $row[0];
}
mysql_free_result($result);
【讨论】:
看了几遍他的问题,我猜他想做的是这样的:
$query = "SELECT field1, field2, ... fieldn FROM table;";
$r = mysql_query($query,$conn);
$row = mysql_fetch_assoc($r);
我还是不太确定他到底想要什么……
【讨论】:
我对这个问题的解释是,提问者在表格中插入了许多行,并且不知道如何处理将它们一次取出一个以外的方法。 (这个问题也可能是指数据序列化然后卡在一个字段中......但我希望不是!)
那么,这里是获取多行的方法:
$query = "SELECT field1, field2, ... fieldn FROM table;";
$r = mysql_query($query,$conn);
$data = array();
while($row = mysql_fetch_assoc($r)) {
$data[] = $row;
}
现在,您的查询返回的所有行都在 $data 中,因此可以通过以下方式访问它:$data[2]['field1']
【讨论】:
以下示例假设您的SELECT 语句存储在$select 中,而您的连接存储在$db 中。结果的二维数组随后存储在$rows中。
如果您使用mysql(对于mysqli 过程,只需将mysql_ 替换为mysqli_):
$result = mysql_query($select, $db);
$rows = [];
while ($row = mysql_fetch_assoc($result) {
$rows[] = $row;
}
使用mysqli 类:
$result = $db->query($select);
$rows = [];
while ($row = $result->fetch_assoc()) {
$rows[] = $row;
}
$result->close()
使用PDO:
$stmt = $db->query($select);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
【讨论】: