これは、いくつかのものを約後の書式設定:)変換に失敗しました
に奇妙出てくるならば、私は事前に申し訳ないので、このサイト上の私の最初の投稿ですこの問題の答えをインターネットで検索して1週間私はこのウェブサイトを試してみると思いました。
とにかく、私は最近、私が取り組んでいるプロジェクトのMS SQLデータベースと対話するためにPHPでPDOを使用し始めました。テーブルの1つが設定される方法は、本質的にほとんどすべての数値、日時、および文字フィールドです。私の問題は日付フィールドです。私が書いているスクリプトは、1つのテーブルから行をコピーし、それを別のテーブルにコピーすることです。元のテーブルのデータがそのテーブルのデータが大きく変更され、多くのテーブルのデフォルトがNULLであるため、のフィールドはNULLです。
この問題を解決するには、NULL値を得るためにかなり多くのことを試してみるために、すべてのヌル値をゼロで置き換える関数を書いています。これは、日付の値を除いて正常に動作します - それらをコメントアウトした後で、insert文はうまくいきます。しかし、その中では、 "datetimeを文字列から変換すると変換に失敗しました。エラーは、おそらくデータベースが '0'をdatetime値に変換できないためです。
どうすればこの問題を修正できますか?
これは、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>";
}
}
ちょうど明白です:日付が 'NULL'の場合、宛先テーブルに何を挿入する必要がありますか?コピーするときに 'NULL'を空文字列または' 0'に置き換える必要がありますか、またはあなたは 'NULL'値をあなたの目的地テーブルにも入れることができますか? – Basti