这是我在这个网站上的第一篇文章,所以如果格式中有一些奇怪的地方,我很抱歉:)
在互联网上搜索这个问题的答案大约一周后,我想我会试试这个网站,因为它在过去帮助了我无数次。
无论如何,我最近开始在 PHP 中使用 PDO 与我一直在从事的项目中的 MS SQL 数据库进行交互。其中一个表的设置方式基本上是几乎所有数字、日期时间和字符字段。我的问题是日期字段。我正在编写的脚本是从一个表中复制一行并将其放入另一个具有自己 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>";
}
}