我有一个表,我试图使用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值,则它们不会保存到文件中,它们将保存为空字符串。
答案 0 :(得分:1)
PHP将null
字符串化为""
(空字符串)。
如果要在保持保真度的同时保存到文件,请使用seralize
或json_encode
等序列化程序。
写作:
fwrite($handle, serialize($saveSql));
阅读
$import = unserialize(fread($handle));
答案 1 :(得分:1)
人们忘记了if语句的力量......
if ($row['myId'] == "") { $saveSql .= "NULL"; }
等等...
答案 2 :(得分:0)
这是可以预料的。 SQL null
映射到PHP null
,在输出时会转换为空字符串。如果您希望输出文字字母n
,u
,l
,l
,那么您必须自己进行转换,例如。
$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);