私はApacheでLinuxを使用していました。IIs サーバーに移動しました。codeigniter 2.0.0 を実行しています
フォームからデータベースにデータを挿入するアクティブレコードを使用した挿入があります。データベースには、各フィールドのデフォルト値があります。問題になることはありませんでした。移動以来、フォームのすべてのフィールドに入力する必要があります。そうしないと、次のエラーが発生します。
Une erreur de base de données s'est produite.
Error Number: 1292
Incorrect date value: '' for column 'DateNaissance' at row 1
INSERT INTO `patients` (`Nom`, `Prenom`, `Initial`, `Responsable`, `DateNaissance`) VALUES ('!teststef354', '!teststef9879', '', '0', '')
Filename: \system\database\DB_driver.php
Line Number: 330
現在の php/mysql のインストールでは、私の codeigniter ベース ファイルが古い可能性があるため、一度に 1 バージョンずつアップグレードします。これを修正する方法はありますか?
mrbs など、作成していない他のアプリケーションをそのサーバーで実行していますが、正常に動作し、テーブルに空のエントリがあり、何の問題もありません。
編集 :
これは私のモデルにあります
function add_patient($postdata)
{
$resultat=0;
if(!empty($postdata))
{
$resultat=$this->db->insert('patients',$postdata);
}
return $resultat;
}
私のコントローラーにはこれがあります:
$postdata = array (
'Nom'=> $_POST['Nom'],
'Prenom'=> $_POST['Prenom'],
'Initial'=> $_POST['Initial'],
'Responsable'=> $_POST['Responsable'],
'DateNaissance'=> $_POST['DateNaissance']
);
私はモデルを次のように呼び出します:
$patientsadd=$this->patients_model->add_patient($postdata);
編集:phpmyadminでSQLクエリを実行すると、同じエラーが発生しました。mysql コマンド プロンプトで SQL クエリを実行しても同じエラーが発生したため、これは MySQL の問題です。
テーブルの Create ステートメントは次のとおりです。
CREATE TABLE IF NOT EXISTS `patients` (
`IdPatient` int(11) NOT NULL AUTO_INCREMENT,
`Nom` varchar(50) DEFAULT NULL,
`Prenom` varchar(50) DEFAULT NULL,
`Initial` varchar(4) DEFAULT NULL,
`Responsable` int(11) DEFAULT '0',
`DateNaissance` date DEFAULT '0000-00-00',
PRIMARY KEY (`IdPatient`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=397 ;
編集:OKなので、これは機能します:
これが私がしたことです。これよりも多くのフィールドがありますが、質問のために短くしました。
すべてのテキスト フィールドに問題がある可能性があるため、すべて編集します。少なくともこの方法では、空の値をモデルに渡さず、MySQL がそれを詰まらせることはありません。テキスト フィールドにはデフォルトの NULL 値が設定されているため (そのようにしたい)、これでこのバグは解決されるはずです。
$postdata = array();
$postdata['Nom'] = $_POST['Nom'];
$postdata['Prenom'] = $_POST['Prenom'];
$postdata['Initial'] = $_POST['Initial'];
$postdata['Responsable'] = $_POST['Responsable'];
if (isset($_POST['DateNaissance']))
{}else {$postdata['DateNaissance'] = $_POST['DateNaissance']; }
私の問題の根本を特定するのを手伝ってくれるすべてのコメント投稿者に感謝します!
私はまだ問題があると思います、私は間違いを犯しました、
この部分 :
if (isset($_POST['DateNaissance']))
{}else {$postdata['DateNaissance'] = $_POST['DateNaissance']; }
する必要があります:
if (empty($_POST['DateNaissance']))
{}else{$postdata['DateNaissance'] = $_POST['DateNaissance']; }