1 回答
TA贡献1877条经验 获得超6个赞
我认为你只需要保留$name一个数组,不要将它分解回一个字符串,然后循环遍历它。我不知道里面$give和其他人是什么。我看到它们是数组,但我不明白它们与$name. 下面的代码执行此操作并插入 16 条记录(假设有 4 个名称):
// Store names in an array
$names = [];
foreach ($_SESSION['s'] as $key => $value) {
$names[] = $value;
}
$conn = mysqli_connect("localhost", "root", "", "slashbill");
$sql = 'INSERT INTO slashbill (member,give,receive,paid) VALUES (?,?,?,?)';
// Loop over names
foreach ($names as $name) {
for ($x = 0; $x <= 3; $x++) {
$stmt = $conn->prepare($sql);
if (!$stmt) {
die('Could not prepare statement');
}
if (!$stmt->bind_param('ssss', $name, $give[$x], $receive[$x], $paid1[$x])) {
die('Could not bind statement');
}
if (!$stmt->execute()) {
die('Could not execute statement');
}
}
}
但是,如果会话数据和您的其他变量之间存在某种神奇的关系,并且您真的只想插入 4 行,那么$x可以使用仍然跟踪的这个版本。
// Store names in an array
$names = [];
foreach ($_SESSION['s'] as $key => $value) {
$names[] = $value;
}
$conn = mysqli_connect("localhost", "root", "", "slashbill");
$sql = 'INSERT INTO slashbill (member,give,receive,paid) VALUES (?,?,?,?)';
// Loop over names
for ($x = 0; $x <= count($names); $x++) {
$stmt = $conn->prepare($sql);
if (!$stmt) {
die('Could not prepare statement');
}
if (!$stmt->bind_param('ssss', $names[$x], $give[$x], $receive[$x], $paid1[$x])) {
die('Could not bind statement');
}
if (!$stmt->execute()) {
die('Could not execute statement');
}
}
我知道你说过你会担心稍后会转义它,但我只是将它切换为准备好的语句,因为它更容易为每个人准备。
- 1 回答
- 0 关注
- 97 浏览
添加回答
举报