我目前正在开发一个CMS,我有一个画廊正在运行,最终用户可以上传他的照片,他们就在网上。 现在我想创建一个选项/功能,最终用户可以选择将哪些照片放在网上,哪些不会。我找到了一个名为update_multiple.php的脚本,它工作正常,但我使用的是MySQLi。我做了一些更改,所以它使用MySQLi,但现在脚本不工作,我不知道为什么。我没有得到任何错误。我的文字没有添加到我的数据库中。
希望有人可以帮助我解决我的错误。
我的代码;
<?php
ob_start();
require('../../lib/dbconnection.php');
$query = "SELECT * FROM gallery";
$result=$conn->query($query) or die(mysqli_error($conn));
$count=$result->num_rows;
?>
<form name="form1" method="post" action="">
<table class="OnlineImages">
....
<?php
/* fetch associative array */
while ($rows = $result->fetch_array(MYSQLI_ASSOC)) {
?>
<tr>
<td><?php $id[]=$rows['id']; ?><?php echo $rows['id']; ?></td>
<td align="center"><input name="filename[]" type="text" id="filename" value="<?php echo $rows['filename']; ?>"></td>
<td><input type="text" name="title[]" id="title" value="<?php echo $rows['title'];?>"></td>
<td><input type="text" name="caption[]" id="caption" value="<?php echo $rows['caption'];?>"></td>
<td><input type="text" name="home[]" id="home" value="<?php echo $rows['home'];?>"></td>
<td><input type="text" name="photobook[]" id="photobook" value="<?php echo $rows['photobook'];?>"></td><br>
</tr>
<?php
}
?>
<input type="submit" name="submit" value="Submit">
</form>
</table>
<?php
// Check if button name "Submit" is active, do this
if(isset($_POST['submit'])){
$title = $_POST['title'];
$caption = $_POST['caption'];
$home = $_POST['home'];
$photobook = $_POST['photobook'];
for($i=0;$i<$count;$i++){
$sql1 = " UPDATE gallery SET title='$title[$i]', caption='$caption[$i]', home='$home[$i],photobook='$photobook[$i]' WHERE id='$id[$i]' ";
$result1=$conn->query($sql1);
}
}
if(isset($result1)){
header("location:foto-admin.php");
}
?>
答案 0 :(得分:0)
您的变量必须在字符串中可识别。
你需要这样做:
" UPDATE gallery SET title='{$title[$i]}', caption='{$caption[$i]}', home='{$home[$i]}',photobook='{$photobook[$i]}' WHERE id='$id[$i]' "
你也错过了'回家后'。
请注意,这会导致sql注入,而应该使用准备好的语句来完成。
编辑:
传输id。变化
<td><?php $id[]=$rows['id']; ?><?php echo $rows['id']; ?></td>
要
<td><input type="hidden" name="id[]" value="<?php echo $rows['id'] ?>" />
<?php $id[]=$rows['id']; ?><?php echo $rows['id']; ?></td>
并添加
$id = $_POST['id'];
前
$title = $_POST['title'];
答案 1 :(得分:0)
据我所知,几个月前我已经在这个领域工作,我已经编写了一个更新多行/列的代码,希望这段代码能帮助你以不同的方式获得一个想法。
$group_sql = $db->prepare("UPDATE `groups` SET `group`=? WHERE `group_id`=?;");
foreach($_POST['groups'] as $id => $group)
{
$group_sql->execute(array($group, $id));
}
多次更新:
$query = array();
foreach($_POST['groups'] as $id => $group)
{
$query[] = "WHEN {$id} THEN {$db->quote($group)}";
}
$query = "
UPDATE `groups`
SET `group` = CASE `group_id`
" . implode("\r\n", $query) . "
END
WHERE `group_id` IN (" . implode(',', array_keys($_POST['groups'])) . ");
";
最终会产生:
UPDATE `groups`
SET `group` = CASE `group_id`
WHEN 3054 THEN 'moteris savo vaikams'
WHEN 3055 THEN 'bičių šeimoje'
END
WHERE `group_id` IN (3054,3055)
UPDATE `groups`
SET `group` = CASE `group_id`
WHEN 3054 THEN 'moteris savo vaikams'
WHEN 3055 THEN 'bičių šeimoje'
END,
SET `description` = CASE `group_id`
WHEN 3054 THEN 'foo'
WHEN 3055 THEN 'bar'
END
WHERE `group_id` IN (3054,3055)