I m trying to create a function which will take an array and create columns and values but I don't know how to return references with functions. Any help is appreciated.
private function data($data) {
$columns = "";
$values = array();
foreach ($data as $column => $value) {
$columns .= ($columns == '') ? '' : ', ';
$columns .= $column;
$values[$column] = &$data[$column];
}
return array($columns, $values);
}
This is the function which inserts data in the database.
/**
* Insert item into items table.
*
* @param (array) $data - Column => value array created in item class.
*/
public function insertItem($data) {
$columns = "";
$values = array();
$prep = "isiisiisiiis";
/*foreach ($data as $column => $value) {
$columns .= ($columns == '') ? '' : ', ';
$columns .= $column;
$values[$column] = &$data[$column];
}*/
$theData = $this->data($data);
$a = str_repeat('?, ', count($data) );
$b = substr_replace($a, '', -2);
$q = $this->db->mysqli->prepare("INSERT INTO items ($columns) VALUES ($b)");
call_user_func_array( array($q, 'bind_param'), array_merge(array($prep), $values) );
$q->execute();
$q->close();
//return id
return $this->db->mysqli->insert_id;
}
Edit ** Working code:
private function data(&$data) {
$columns = "";
$values = array();
foreach ($data as $column => $value) {
$columns .= ($columns == '') ? '' : ', ';
$columns .= $column;
$values[$column] = &$data[$column];
}
return array($columns, $values);
}
And accessing it like this:
$theData = $this->data($data);
$theData[0]; //$columns
$theData[1]; //$values
try this: add &
in function param and remove the &
inside the foreach loop.
private function data (&$data)
{
$columns = "";
$values = array ();
foreach ($data as $column => $value)
{
$columns .= ($columns == '') ? '' : ', ';
$columns .= $column;
$values[$column] = $data[$column];
}
return array ($columns, $values);
}
inside public function insertItem remove $theData =
public function insertItem ($data)
{
[..]
$this->data ($data);
}
private function data(&$data) {
$columns = "";
$values = array();
foreach ($data as $column => $value) {
$columns .= ($columns == '') ? '' : ', ';
$columns .= $column;
$values[$column] = &$data[$column];
}
return array($columns, $values);
}
$theData = $this->data($data);
$theData[0]; //$columns
$theData[1]; //$values
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.