Sinds een paar dagen ben ik aan het uitzoeken hoe prepared Statements vo SQL werken. Ik ben een simpele functie aan het maken welke een array aan data in een tabel kan toevoegen.
Mijn input ziet er als volgt uit :
En de functie zelf :
Deze code lever mij de volgende warning op : "PHP Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given in .."
Ik heb een redelijk vermoeden waarom ik de warning krijg, maar hoe los ik dit netjes op? De grootte van mijn array is namelijk variabel.
Mijn input ziet er als volgt uit :
PHP:
1
2
3
4
5
6
7
8
9
| //$data moet er als volgt uitzien : // array('veldnaam' => array('data type','data'),'veld 2' => array('type','data'),etc) //Mogelijke types zijn : // i = integer; // s = string; // d = double; // b = blob; $data = array('field1' => array('s','string'), 'field2' => array('s','value')); insertData(table',$data); |
En de functie zelf :
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| function insertData($tableName,$data) { $mysqli = new mysqli("localhost", "userName", "Pass", "dbName"); $fieldName=array(); //Veld Namen $fieldType=array(); //Data Type $fieldValue=array(); //Data $values=array(); //Generen van ? in Query foreach($data as $field => $content) { array_push($fieldName,$field); array_push($fieldType,$content[0]); array_push($fieldValue,$content[1]); array_push($values,'?'); } $preparedStatement='INSERT INTO `'.$tableName.'` (`'.implode($fieldName,'`,`').'`) values ('.implode($values,',').')'; if ($stmt = $mysqli->prepare("$preparedStatement")) { /* Bind our params */ $stmt->bind_param(implode($fieldType), $fieldValue); } else { echo'Error 473'; } } |
Deze code lever mij de volgende warning op : "PHP Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given in .."
Ik heb een redelijk vermoeden waarom ik de warning krijg, maar hoe los ik dit netjes op? De grootte van mijn array is namelijk variabel.