public function update($id, $table, $data, $exclude = array()){
$query = "UPDATE $table SET";
$fields = $values = array();
if(!is_array($exclude)) $exclude = array($exclude);
foreach(array_keys($data) as $key) {
if(!in_array($key, $exclude)) {
$fields[] = "`$key`";
$values[] = "'" . $this->db->real_escape_string($data[$key]) . "'";
}
$fields = implode(" ", $fields);
$values = implode(" ", $values);
$query .= $fields . "=" . $values . ",";
}
$query = $query . "WHERE id = '".$id."' ";
if(!$this->db->query($query)){
echo "Something wrong with query ";
}
else{
echo "successfully updated";
}
}
ガットエラー更新データ働いていた追加機能から動的に
Fatal error: [] operator not supported for strings
微調整コード。変数を使用せずにフィールドと値を動的に更新したい、つまり$ _POST ['address']。
$query .= $fields . "=" . $values . ", ";
は動作していないようです。エラーの原因は不明:致命的なエラー:[]演算子は文字列でサポートされていません。フィールド=値をSQLクエリに挿入するには? foreachループでこの
if(!is_array($exclude)) $exclude = array($exclude);
foreach(array_keys($data) as $key) {
if(!in_array($key, $exclude)) {
$query .= $key . "='" . $data[$key] . "' ,";
}
}
$query = substr($query,0,strlen($query)-1);
$query = $query . " WHERE id = '".$id."' ";
あなたはforeach内で配列を内包し、同じ変数で更新してstringに変更します。 '$ fields = implode(" "、$ fields);'、foreachの外で行うか、foreachの始めに '$ fields = $ values = array();'を初期化します。 –
あなたが提案をしなければ人々はなぜあなたを助けますか? –