0

我有一个表,我正在尝试使用 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

4 回答 4

1

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

如果您想在保持保真度的同时保存到文件,请使用像seralizeor之类的序列化程序json_encode

写作:

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

阅读

$import = unserialize(fread($handle));
于 2013-08-08T15:58:58.943 回答
1

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

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

ETC...

于 2013-08-08T16:00:08.907 回答
0

这是可以预料的。一个 SQLnull被映射到一个 PHP null,当你输出它时它被转换为一个空字符串。如果您想要输出文字字母n, u, l, l, ,那么您必须自己进行转换,例如

$text = isnull($row['myName']) ?: 'NULL';
于 2013-08-08T15:59:37.593 回答
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);
于 2013-08-08T16:04:18.573 回答