我正在从 json URL 插入/更新 mysql 表,但 $points 中的某些值包含破折号,我想在更新时修改为零(或 null 也可以),以便我可以拥有列设置为 INT。
我知道如何简单地将 mysql 中的 all - 替换为 0,但在尝试从 json URL 进行更新时卡住了。我的代码是:
for ($i = 0; $i < $length; $i++) {
$sus = $array['formguide'][$i]['SUSPENSION'];
$wpoints = $array['formguide'][$i]['WEEKPOINTS'];
$tcode = $array['formguide'][$i]['TEAMCODE'];
$val = $array['formguide'][$i]['VALUE'];
$points = $array['formguide'][$i]['POINTS'];
$pname = $array['formguide'][$i]['PLAYERNAME'];
$tname = $array['formguide'][$i]['TEAMNAME'];
$sixwpoints = $array['formguide'][$i]['SIXWEEKPOINTS'];
$injury = $array['formguide'][$i]['INJURY'];
$playerid = $array['formguide'][$i]['PLAYERID'];
$pos = $array['formguide'][$i]['POS'];
//insert or update values into mysql
$sql = "INSERT INTO formguide (suspension, weekpoints, teamcode,
value, points, playername, teamname,
sixweekpoints, injury, playerid, pos)
VALUES ('$sus', '$wpoints', '$tcode','$val','$points','$pname','$tname',
'$sixwpoints','$injury','$playerid','$pos')
ON DUPLICATE KEY UPDATE suspension='$sus', weekpoints='$wpoints',
teamcode='$tcode', value='$val', points='$points', playername='$pname',
teamname='$tname', sixweekpoints='$sixwpoints', injury='$injury',
playerid='$playerid', pos='$pos'";
我在 UPDATE() 部分中的点上尝试了 REPLACE(),即:
...points=REPLACE('$points','-','0'), playername='$pname', ...
但是这不起作用。
有什么想法可以做到这一点,或者是否有其他方法可以将点列设置为 INT 并接受破折号? 谢谢
最佳答案
REPLACE
用于修改来自 SQL 的值,而您想要修改来自 PHP 的值。
改用str_replace
。
$points = str_replace('-', '0', $points);
关于PHP 在插入到 mySQL 时将数组中的破折号替换为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49225412/