一尘不染

串联中的附加项无法正常工作

php

这是我的带有SQL查询的PHP代码,但是输出与预期不符:

$sql = 'INSERT INTO `event_footers` (`event_id`, `order`, `file_id`, `url`) VALUES ';
foreach($all_footers as $key => $val){
    $sql .= '('.(int)$data['event_id'].', '.$key + 1 .', '.(int)$val['file_id'].', "'.addslashes($val['url']).'"), ';
}

$sql = rtrim($sql, ', ');
var_dump($sql);
exit;

而且我得到这样的SQL查询:

`INSERT INTO `event_footers` (`event_id`, `order`, `file_id`, `url`) VALUES 1, 2135, "http://11.lt"), 1, 2136, "http://22.lt"), 1, 2140, "http://44.lt")`

(VALUES之后的第一个在哪里?


阅读 226

收藏
2020-05-29

共1个答案

一尘不染

+.具有相同的运算符优先级,但保持关联。第一次串联后的意思是:

'(' **。** (int)$ data ['event_id']

该字符串已添加到您的密钥中,例如

"($data['event_id']" + $key

因此,该字符串在该数字上下文中转换为整数
消失 。要解决此问题,请()在您的加法前后加上括号。

2020-05-29