5
votes

I am building a function that acts like Drupal's variable_initialize() function that pulls all key/value pairs into a global variable. I am trying to find the proper parameters I need to put into fetchAll() to remove the row number and get basically what fetch(PDO::FETCH_ASSOC) does but for all returned rows.

I basically want fetchAll to return:

Array {
    [name] = value,
    [name2] = value2,
    [name3] = value3,
}

The variable table is a simple 2 column table (name)|(value)

function variable_init() {
global $db, $variable;

$query = "SELECT * FROM variable";
$stmt = $db->prepare($query);
$stmt->execute();
$result = $stmt->fetchAll(); //need help here

    foreach($result as $name => $value) {
        $variable[$name] = $value;
    }
}

I have tried PDO_COLUMN/PDO_GROUP/etc... but I can't seem to offset the array to remove the row numbers. Thanks.

1

1 Answers

9
votes

I think you may be getting confused about what PDOStatement::fetchAll() returns.

The method returns all rows (arrays or objects, depending on fetch style) in an array.

Try this

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($result as $row) {
    $variable[$row['name']] = $row['value'];
}