如果value为empty / null,则根据数据库的长度替换数据库中的值

时间:2017-04-26 08:22:42

标签: php

情景:

Database Table 
Column     Type      Length            Sample Values
emp_code   varchar     4            0011      0021    0012
emp_desc   varchar     2            01        03      01
emp_stat   varchar     1            1                 0

问题:

我正在查询,以便我可以将结果写入文本文件。

$file = "data.txt";
$f = fopen($file, "a");
$qry = "SELECT * FROM tbl_emp";
$result = mysqli_query($conn, $qry );
if(!$result) {
    echo "Cannot do query" . "<br/>";
exit;
}

$num_results =mysqli_num_rows($result);
for ($i=0; $i<=$num_results; $i++) {
    $row = mysqli_fetch_assoc ($result);
        $emp_code = (empty($row['emp_code']) ? "    " : $row['emp_code']); //replace with 4 spaces
        $emp_desc = (empty($row['emp_desc']) ? "  " : $row['emp_desc ']);  //replace with 2 spaces
        $emp_stat = (empty($row['emp_code']) ? " " : $row['emp_code']);  //replace with 1 space

     $data = "$emp_code $emp_desc $emp_stat\r\n";
     fwrite($f,$data); 
}

Data.Txt应包含:

0011011
002103 
0012010

但这是结果:

0011011
002103 
001201

如果行的值为0,则在不应该为空时将其替换为空白。需要更改什么才能获得正确的数据? TIA。

1 个答案:

答案 0 :(得分:0)

不要使用empty0是空的。根据您在那里检查的内容,它可以是以下之一:

$emp_stat = (is_null($row[...]) ? " " : $row[...])
$emp_stat = (($row[...] === "") ? " " : $row[...])
$emp_stat = (is_numeric($row[...])? $row[...] : " ")