関連コード:
$sql = "INSERT INTO rel_attivita_corsi(id_attivita,id_corso) VALUES";
foreach($elements as $element) {
$sql .= "('".$element."','1'),";
}
$sql = substr($sql,0,-1);
if (!$this->db->query($sql)) {
echo "FALSE";
}
else {
echo "TRUE";
}
echo $this->db->last_query();
テーブル構造:
rel_attivita_corsi
-----------------------------
ID (int) primary
id_attivita (int)
id_corso (int)
ご覧のとおり、最後の raw は正しいクエリを返しますが、db のテーブルは空のままです... phpmyadmin で返されたクエリを実行すると、すべてが正しく機能します。
何か案は?
更新 1 - アクティブ レコードの使用:
$dati = array();
foreach($elements as $element){
$dati[] = array('id_attivita' => $element, 'id_corso' => 1);
}
if (!$this->db->insert_batch("rel_attivita_corsi",$dati)) {
echo "FALSE";
}
else {
echo "TRUE";
}
echo $this->db->last_query();
成功せず、最後のクエリは正しく印刷されましたが、挿入は行われません
更新 2 - アクティブなレコードを使用し、foreach を使用しない:
$this->db->insert_batch("rel_attivita_corsi",array(array('id_attivita' => 7,'id_corso' => 1),array('id_attivita' => 9,'id_corso' => 1)));
失敗....
偽の値を実際の値に置き換えました。$elements
配列は次のとおりです。
Array
(
[0] => 7
[1] => 9
)
UPDATE 3 問題は解決しました...テーブルに挿入されたすべてのレコードを削除するコードの後に別のクエリがあったため、テーブルは常に空でした
コードの流れに疑問がある場合は、プロファイリングを使用してみてください