PHPフレームワークとしてcodeigniterを使用しています。fromを送信してデータベースに投稿すると、このエラーが発生し続けます。
You must use the "set" method to update an entry
それが何を意味するのか正確にはわかりません、私が見た他の投稿から、誰もがデータマッパーがオブジェクトに割り当てられた値を持つ必要があると言います。
私はこのすべてに新しいので、誰かが私により良い説明を与えることができます。
ここに私がエラーがあると言っている私のコードがあります:
class Add_book extends CI_Model {
public function add_book($data){
$this->db->insert('ST_ITM', $data);
}
}
?>
ありがとうございました。
あなたはこの例のようなことだけをする必要があります
class Add_book extends CI_Model {
public function add_book(){
// 'book_name' would be the name of your column in database table
$data = array(
'book_title' => $this->input->post('book_title'),
'book_author' => $this->input->post('book_author'),
'book_name' => $this->input->post('book_name')
);
$this->db->set($data);
$this->db->insert($this->db->dbprefix . 'ST_ITM');
}
}
ビューでは、入力は例のようになります
<input type="text" name="book_name" value="" />
<input type="text" name="book_title" value="" />
<input type="text" name="book_author" value="" />
モデルでデータ配列を使用するのが最適です。フォーム検証の成功部分でモデル関数をロードします ライブラリ
ここに到着したすべての人にとって、挿入クエリでsetを使用する必要はありません。
https://www.codeigniter.com/userguide3/database/query_builder.html#inserting-data
$data = array(
'title' => 'My title',
'name' => 'My Name',
'date' => 'My date'
);
$this->db->insert('mytable', $data);
// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')
このエラーは、挿入データの誤構成(配列である必要があります)や、挿入配列の前にテーブル名を追加しないなどの正しいActive Recordクエリの書き込みに失敗した結果です。
しかし、doをいつ使用するか
更新中または置換中に自動エスケープをバイパスする必要がある場合次に例を示します。
$this->db->set('last_login', 'NOW()', FALSE);
$this->db->update(DB_PREFIX .'user', array('login_attempts' => 0));
3番目のパラメーターは自動エスケープを無効にしました。これにより、アクティブレコードクエリを作成するときに必要な柔軟性が得られます。
私が通過していたときに私はこのエラーを受け取りました 間違った変数 挿入ステートメントに。
例えば :
function($a){ $this->db->insert($aa); <-- error !! }
そこで、正しい変数$ aを渡すことで解決しました。
また、挿入配列が$a = array('columnname'=>'value');
として正しくフォーマットされていることを確認してください
たとえば、データを挿入したいので、以下のようなコードを実行する必要があります-
My View File(Login_form.php)
<label>Username:</label> <input type="text" name="username" value="">
<label>Password:</label> <input type="password" name="password" value="">
マイモデルファイル(Model_login.php)
class Model_login extends CI_Model {
public function insert_entry()
{
$data= array(
'username'=>$this->input->post('username'), // here username and password are database fields.
'password'=>$this->input->post('password'),
);
$this->db->insert('login', $data); //here login is my database table's name
}
}
Controller File(Login.php)
class Login extends CI_Controller {
public function index()
{
$this->load->view('Login_form'); //to load view file
}
public function getLoginValues()
{
$this->load->model('Model_login'); //to load Model file
$data=$this->Model_login->insert_entry();//to load method of Model file
}
}
正常に動作します。確認してください。