获取NULL以保存到文件

时间:2013-08-08 15:56:32

标签: php mysql sql

我有一个表,我试图使用PHP保存到一个sql文件。 该表包含NULL字段。 但是,当我尝试循环遍历表行以保存到文件时,NULL变为空字符串,有什么我可以做的来防止这种情况吗? 以下是代码片段

$sql="SELECT * FROM myTable";
$sql_result=mysql_query($sql);
while ($row = mysql_fetch_array($sql_result,MYSQL_ASSOC)){
    $saveSql.=$row['myId'].",";
    $saveSql.="'".$row['myName']."',";
    $saveSql.=$row['myAge'].",";
}

$handle = fopen('database.sql', 'w');
fwrite($handle,$saveSql);

如果有NULL值,则它们不会保存到文件中,它们将保存为空字符串。

4 个答案:

答案 0 :(得分:1)

PHP将null字符串化为""(空字符串)。

如果要在保持保真度的同时保存到文件,请使用seralizejson_encode等序列化程序。

写作:

fwrite($handle, serialize($saveSql));

阅读

$import = unserialize(fread($handle));

答案 1 :(得分:1)

人们忘记了if语句的力量......

if ($row['myId'] == "") { $saveSql .= "NULL"; }

等等...

答案 2 :(得分:0)

这是可以预料的。 SQL null映射到PHP null,在输出时会转换为空字符串。如果您希望输出文字字母null,那么您必须自己进行转换,例如。

$text = isnull($row['myName']) ?: 'NULL';

答案 3 :(得分:0)

试试这个

$sql="SELECT * FROM myTable";
$sql_result=mysql_query($sql);
while ($row = mysql_fetch_array($sql_result,MYSQL_ASSOC)){
    if(isNull($row['myId']){$saveSql.="NULL".",";}else{$saveSql.=$row['myId'].",";}
    if(isNull($row['myName']){$saveSql.="NULL".",";}else{$saveSql.=$row['myName'].",";}
    if(isNull($row['myAge']){$saveSql.="NULL".",";}else{$saveSql.=$row['myAge'].",";}
}

$handle = fopen('database.sql', 'w');
fwrite($handle,$saveSql);