2009/7/13 MEM <tal...@gmail.com>:
>>     $values[0] will give you the first element of $values, namely
>> array('animal_name'=>'bruce', 'animal_type'=>'dingo').
>>     array_keys will return an array containing the keys from the
>> passed array, so in this case you'll get array('animal_name',
>> 'animal_type').
> So... since $value is an associate array of arrays, we will get, on the first 
> key, not an array with "0, 1", like array(0,1); but 
> array('animal_name','animal_type'), yes?
> When we use the implode over this array, we get:
> animal_name, animal_type that is the string that will pass to be prepare 
> using the PDO prepare().


>> After it's finished building $sql use var_dump to look at it. You'll
>> see that the values are specified as :animal_name and :animal_type.
>> The : indicates to PDO that these are replaceable values.
> Yes. And normally, to fill those replaceable values, I was used to use 
> bindParam();
> I like this bindParam method because we can then use PDO::PARAM_INT and 
> PDO::PARAM_STR to more accurately control the data type flow...

I'm not overly familiar with PDO, but I believe that's an alternative
way to do it. The execute method lets you do it in one method call.

>> The foreach will go through the $values array and for each row it will
>> pass the data (e.g. array('animal_name'=>'bruce',
>> 'animal_type'=>'dingo') for the first time round the loop) to the
>> execute function which will effectively replace those elements in the
>> SQL statement and execute it.
> Ok, so:
> Our $sql will be: INSERT INTO $table (animal_name, animal_type) VALUES 
> (:animal_name, :animal_type)
> We then prepare this $sql by doing:
> prepare($sql); and the value of this preparation will be kept on a variable 
> name $stmt.
> Finally, on the foreach, we will grab each value of the $values array, and 
> keep him, on a variable called $vals,
> The $vals will contain this on the first occurrence of the loop:
> array('animal_name'=>'bruce', 'animal_type'=>'ding')
> and then, the var $vals will have this on the second occurrence of the loop:
> array('animal_name'=>'bruce', 'animal_type'=>'kanguro')
> etc.,
> At the end of each of these loops, we will process the execute (that will 
> send the statement to the database).
> $stmt->execute(array('animal_name'=>'bruce', 'animal_type'=>'kanguro').
> So this execute will do A LOT, it will take away the 'array(' part, will see 
> the keys of these arrays (e.g. animal_name and animal_type) compare them with 
> the placeholder names given on the prepare statement and, replace the 
> placeholder names with the values inside on each of this array keys.
> Is this correct?




PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to