Fork me on GitHub
Critical: Update to 2.1.8, released 15 Jan.

Inserting an array of values into database

CsabbencsCsabbencs New
edited November 2011 in Development
I have an array of values (not associative) that I'd like to insert to the database. First, I thought that this simple line of code will do this for me:
$this->SQL->Insert('MyTable', $Data);
But it didn't work.

I checked class.mysqldriver.php, function GetInsert and found what I know: when you have an associative array of FieldName => Value pairs, it works like a charm.
Quite a common case when you just have your values to be inserted and you don't want to specify column names like:
INSERT INTO tbl_name VALUES(myvalue1, myvalue2, ... , myvalueX);
I think the function should handle that.

How can I avoid to build an associative array of FieldName => Value pairs?
Please explain.

Best Answer

  • TimTim Lord of Servers Vanilla Staff
    edited November 2011 Answer ✓
    @Csabbencs This is not how the database layer works, and we don't plan to add additional magic functionality like the type you're asking. That is for the Model or Controller to handle.

    @x00 is correct: you should always build a proper columnname -> value list, at the very least for the sake of clarity.

    That said, you can do that step programmatically, like so:
    $DataFormatted = array();
    $DataLength = sizeof($Data);
    for ($i = 1; $i <= $DataLength; $i++) {

    $DataFormatted["Mycolumn{$i}"] = $Data[$i];

    $this->SQL->Insert("MyTable", $DataFormatted);


Sign In or Register to comment.