0
我試圖創建一個函數,它將採取一個數組並創建列和值,但我不知道如何返回與函數的引用。任何幫助表示讚賞。PHP返回參考
private function data($data) {
$columns = "";
$values = array();
foreach ($data as $column => $value) {
$columns .= ($columns == '') ? '' : ', ';
$columns .= $column;
$values[$column] = &$data[$column];
}
return array($columns, $values);
}
這是在數據庫中插入數據的函數。
/**
* 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;
}
編輯**工作代碼:
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
我仍然得到'警告:參數2 mysqli_stmt :: bind_param()預計爲參考,值given' – Ciprian 2015-04-01 17:31:44
確定我的壞。我會嘗試編輯我的答案 – 2015-04-01 17:47:53
以上現在我得到這個錯誤:'致命錯誤:未捕獲的異常'mysqli_sql_exception'消息'列計數與第1行的值計數不匹配' – Ciprian 2015-04-01 18:26:25