これはこのサイトでの私の最初の投稿ですので、書式設定で何かおかしくなった場合は事前に申し訳ありません:)
この問題に対する答えをインターネットで約 1 週間検索した後、過去に数え切れないほど助けられたので、この Web サイトを試してみることにしました。
とにかく、私は最近、取り組んでいるプロジェクトで MS SQL データベースと対話するために PHP で PDO を使い始めました。テーブルの 1 つが設定される方法は、基本的にほぼすべての数値、日時、および文字フィールドです。私の問題は日付フィールドにあります。私が書いているスクリプトは、あるテーブルから行をコピーし、それを独自の ID で別のテーブルに配置するように作成されています。元のテーブルには NULL 値が含まれているため、そのテーブルのデータが頻繁に変更され、多くの場合のデフォルトが変更されるため、エラーが発生していました。フィールドの NULL です。
この問題を解決するために、NULL 値を機能させるためにさまざまなことを試した後、すべての NULL 値をゼロに置き換える関数を作成しました。これは、日付値を除いて正常に機能します-それらをコメントアウトした後、挿入ステートメントは正常に機能します-しかし、それらを使用すると、「日時を文字列から変換するときに変換に失敗しました」というメッセージが表示されます。おそらく、データベースが「0」を日時値に変換できないためです。
これを修正するにはどうすればよいですか?
これは、NULL 値を置き換える私の関数です。値をNULLのままにしておくと、データ型nvarcharを数値に変換する際にエラーが発生することにも注意する必要があると思います。エラー。
function check_empty($field, $slno){
try{
require("assets/dbcnct.php");
$stmt = $DBH->prepare(" select ". $field ." from timeticket where slno = :slno ");
$stmt->bindParam(':slno', $slno);
$stmt ->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo "<pre>";
var_dump($result);
echo "</pre>";
foreach($result as $key=>$val){
if(empty($val)){
$val = 0;
}
}
return trim($val);
}
catch(PDOException $e) {
echo "<pre>";
echo $e->getMessage();
echo "</pre>";
}
}