Hi,
irgendwie hab ich ein Brett vorm Kopf. Bei folgendem Code geht mir die jeweilige Referenz im Array verloren:
Übergebe ich im Code keine Referenzen und behandel den Value als String und behelfe mir mit einer Funktion:
die ich bei $bind_params in der call_user_func_array() aufrufe, geht es.
Wo und warum gehen mir zwischendurch die Referenzen flöten?
By the way: Variablennamen bitte erstmal außen vor lassen - danke.
mfg wolf
irgendwie hab ich ein Brett vorm Kopf. Bei folgendem Code geht mir die jeweilige Referenz im Array verloren:
PHP-Code:
<?php
require "DBConnection.php";
$connection = new DBConnection(....);
// ...
$pro = array("id", "status"); // Testwerte
$sel = array('id' => array(1,2,3,4,5,6,7), 'status' => 0); // Testwerte
$result = $connection->executeStatementWResult(createSelect($connection, "user_tools", NULL, $sel));
while($row = $result->fetch_assoc())
{
// .....
}
// ......
function createSelect($con, $table, $project=NULL, $select=NULL)
{
$type_table = array(string => 's', integer => 'i', double => 'd', boolean => 'b');
$proj = empty($project)?"*":((is_array($project))?implode(', ' ,$project):$project);
$query = "SELECT ".$proj." FROM ".$table;
if(!empty($select))
{
$projection .= "WHERE ";
foreach ($select as $key => $value)
{
if(is_array($value))
{
$projection .= $key." IN (";
foreach ($value as $k => $v)
{
$bind_types .= $type_table[gettype($v)];
$bind_params[] = & $value[$k]; // --> Referenz gesetzt
$projection .= "?".(next($value)?",":"");
}
$projection .= ") ";
}
else
{
$bind_types .= $type_table[gettype($value)];
$bind_params[] = & $select[$key]; // --> Referenz gesetzt
$projection .= $key."=?";
}
if(next($select) !== false)
$projection .= " AND ";
}
$query .= " ".$projection;
}
$query .=";";
$stmt = $con->prepare($query);
array_unshift($bind_params,$bind_types);
call_user_func_array(array($stmt, 'bind_param'), ($bind_params)); // --> Fehlermeldung: Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given in...
return $stmt;
}
PHP-Code:
function makeValuesReferenced(&$arr)
{
$refs = array();
foreach($arr as $key => $value)
$refs[$key] = &$arr[$key];
return $refs;
}
Wo und warum gehen mir zwischendurch die Referenzen flöten?
By the way: Variablennamen bitte erstmal außen vor lassen - danke.
mfg wolf
Kommentar