HackerOne users: Testing against this community violates our program's Terms of Service and will result in your bounty being denied.
Inserting an array of values into database
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:
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:
I think the function should handle that.
How can I avoid to build an associative array of FieldName => Value pairs?
Please explain.
$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.
0
Best Answer
-
Tim Vanilla Staff@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);0
Answers
the models are not quite ORM, but you want to specify what you want inserted in which column. Good practice. Also your code will make more sense.
Btw you can get as an associative array.
grep is your friend.
Needless.
@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:
Vanilla Forums COO [GitHub, Twitter, About.me]