我有一个用于INSERT
命令的字符串。当值为空时,INSERT
字符串中的相应位点将生成为:
VALUES ('', 'VALUE', '', '', '', 0, 1, '')
我想替换''使用NULL
,因此数据库不再会因将varchar
投射到numeric
类型而引发错误:
VALUES (null, 'VALUE', null, null, null, 0, 1, null)
我尝试使用:
$build_values_m = str_replace($build_values_m, ", '', ", ", null, ");
然而,这会夺走我的大部分INSERT
字符串,并且不能用NULL
替换空值。
我该怎么做?
答案 0 :(得分:1)
看起来您想要将"''"
替换为"NULL"
并且您试图这样做而不是查看手册:http://php.net/manual/en/function.str-replace.php
如果您查看手册,您会看到参数的顺序是Search,Replace,OriginalString。你正试图做OriginalString,搜索,替换 - 这显然不起作用。所以,尝试按正确的顺序进行:
$build_values_m = str_replace("''","NULL",$build_values_m);
然后,"''"
的所有实例都将替换为字符串"NULL"
。
答案 1 :(得分:1)
您可以使用正则表达式替换函数preg_replace()
执行替换,如下所示:
$string = "VALUES ('','','VALUE HERE','',)";
$pattern = array();
$pattern[0] = '/\'\'/g'; // Match : ''
$replacement = array();
$replacement[0] = 'NULL';
preg_replace($pattern, $replacement, $string);