Извлечение данных из поля таблицы Mysql и помещение их в массив - PullRequest
0 голосов
/ 09 января 2009

Я могу найти множество учебных пособий, показывающих, как загрузить массив в поле базы данных, но не могу понять, как вытащить каждую запись в поле в массив как отдельные элементы. Кажется достаточно простым, просто не могу заставить его работать, любая помощь?

Ответы [ 5 ]

1 голос
/ 09 января 2009

При использовании современной библиотеки 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);
0 голосов
/ 10 января 2009

В примерах ниже предполагается, что ваш оператор 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);
0 голосов
/ 09 января 2009

Моя интерпретация этого вопроса заключается в том, что спрашивающий вставил несколько строк в таблицу и не знает, как справиться с их извлечением, кроме одной за один раз. (Возможно, что вопрос также относится к сериализованным данным, а затем вставляется в одно поле ... но я надеюсь, что нет!)

Итак, как получить несколько строк:

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

0 голосов
/ 09 января 2009

Прочитав его вопрос несколько раз, я думаю, что он хочет сделать что-то вроде этого:

$query = "SELECT field1, field2, ... fieldn FROM table;";
$r = mysql_query($query,$conn);
$row = mysql_fetch_assoc($r);

Я до сих пор не совсем уверен, чего именно он хочет ...

0 голосов
/ 09 января 2009
$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);
}

Нечто подобное, я думаю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...