이 몇 가지에 대한 후 포맷 :변환에 실패
에 이상 나올 경우 내가 미리 미안 해요, 그래서이 사이트에 내 첫 번째 게시물입니다 이 문제에 대한 해답을 찾기 위해 인터넷을 검색하는 한 주 동안 나는이 웹 사이트를 시도해 보았습니다. 과거에 수없이 많은 도움을주었습니다.
어쨌든, 저는 PHP에서 PDO를 사용하여 프로젝트에서 MS SQL 데이터베이스와 상호 작용했습니다. 테이블 중 하나가 설정되는 방식은 근본적으로 거의 모든 숫자, datetime 및 문자 필드입니다. 내 문제는 날짜 필드입니다. 내가 쓰고있는 스크립트는 하나의 테이블에서 행을 복사하여 고유 한 ID로 다른 테이블에 넣습니다. 원래 테이블에있는 테이블의 데이터가 많이 변경되고 많은 테이블의 기본값이 NULL이기 때문에 오류가 발생했습니다. 필드의 NULL입니다.
이 문제를 해결하기 위해 NULL 값을 얻기 위해 상당히 많은 다른 작업을 시도하면서 모든 null 값을 0으로 대체하는 함수를 작성했습니다. 이것은 날짜 값을 제외하고는 잘 작동합니다. 삽입 문을 주석으로 처리 한 후 작동해야합니다. 그러나 "문자열을 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