当点击删除按钮时,需要从 table 中删除图像,而是显示错误消息
When Delete button hit, image needs to be deleted from table, error message showing instead
我有一个画廊,我希望用户可以在其中更新图像标题并根据需要删除图像。我的更新标题代码按预期工作,我假设删除代码不会太远。
<?php
$query = "SELECT * FROM `tblImage`";
$result = $conn -> query($query);
while($row = $result -> fetch_assoc())
{
?>
<form method="post" action="">
<a href="<?php echo $row['fldFilePath']; ?>" data-lightbox="gallery" data-title="<?php echo $row['fldName']; ?>"><img src="<?php echo $row['fldFilePath']; ?>" class="ImgRound"></a>
<label>Image Name: <?php echo $row['fldName']; ?></label>
<input name ="img-title" type ="text" placeholder="Enter New Image Title...">
<button type="submit" value ="<?php echo $row['fldName'] ?>" name="update_title" class="ImgRound size-btn">Update</button>
<button type="submit" value ="<?php echo $row['fldName'] ?>" name="delete" class="ImgRound size-btn">Delete</button>
</form>
<?php
if(isset($_POST['update_title']))
{
$imgTitle = $_POST['img-title'];
$stmt = $conn->prepare("UPDATE `tblImage` SET `fldName` = ? WHERE `fldName` = ?");
$stmt->bind_param("ss", $imgTitle, $_POST['update_title']) or die($stmt->error);
if ($stmt->execute())
{
header("Refresh:0");
}
else {
die($stmt->error);
}
}
}
?>
只要我在最后一次关闭之前添加以下代码 }
:
if(isset($_POST['delete']))
{
$imgTitle = $_POST['img-title'];
$stmt = $conn->prepare("DELETE FROM `tblImage` WHERE `tblImage`.`fldName` = ?");
$stmt->bind_param("ss", $imgTitle, $_POST['delete']) or die($stmt->error);
if ($stmt->execute())
{
header("Refresh:0");
}
else {
die($stmt->error);
}
}
出现的错误是:警告:mysqli_stmt::bind_param():变量数与准备语句中的参数数不匹配
对我做错了什么有什么指导吗?也许是查询,或者我应该将值放在文件路径的删除按钮中作为图像名称的对应 - fldName
?
如有任何帮助,我们将不胜感激。
$stmt = $conn->prepare("DELETE FROM `tblImage` WHERE `tblImage`.`fldImageID` = ?");
$stmt->bind_param("ss", $imgTitle, $_POST['delete']) or die($stmt->error);
你有一个问号(参数),所以两个变量太多了。
这应该变成
$stmt = $conn->prepare("DELETE FROM `tblImage` WHERE `tblImage`.`fldImageID` = ?");
$stmt->bind_param("s", $_POST['delete']) or die($stmt->error);
您似乎只有一个参数 ?
,但您有 "ss"
,请删除其中一个并重新运行查询。
我有一个画廊,我希望用户可以在其中更新图像标题并根据需要删除图像。我的更新标题代码按预期工作,我假设删除代码不会太远。
<?php
$query = "SELECT * FROM `tblImage`";
$result = $conn -> query($query);
while($row = $result -> fetch_assoc())
{
?>
<form method="post" action="">
<a href="<?php echo $row['fldFilePath']; ?>" data-lightbox="gallery" data-title="<?php echo $row['fldName']; ?>"><img src="<?php echo $row['fldFilePath']; ?>" class="ImgRound"></a>
<label>Image Name: <?php echo $row['fldName']; ?></label>
<input name ="img-title" type ="text" placeholder="Enter New Image Title...">
<button type="submit" value ="<?php echo $row['fldName'] ?>" name="update_title" class="ImgRound size-btn">Update</button>
<button type="submit" value ="<?php echo $row['fldName'] ?>" name="delete" class="ImgRound size-btn">Delete</button>
</form>
<?php
if(isset($_POST['update_title']))
{
$imgTitle = $_POST['img-title'];
$stmt = $conn->prepare("UPDATE `tblImage` SET `fldName` = ? WHERE `fldName` = ?");
$stmt->bind_param("ss", $imgTitle, $_POST['update_title']) or die($stmt->error);
if ($stmt->execute())
{
header("Refresh:0");
}
else {
die($stmt->error);
}
}
}
?>
只要我在最后一次关闭之前添加以下代码 }
:
if(isset($_POST['delete']))
{
$imgTitle = $_POST['img-title'];
$stmt = $conn->prepare("DELETE FROM `tblImage` WHERE `tblImage`.`fldName` = ?");
$stmt->bind_param("ss", $imgTitle, $_POST['delete']) or die($stmt->error);
if ($stmt->execute())
{
header("Refresh:0");
}
else {
die($stmt->error);
}
}
出现的错误是:警告:mysqli_stmt::bind_param():变量数与准备语句中的参数数不匹配
对我做错了什么有什么指导吗?也许是查询,或者我应该将值放在文件路径的删除按钮中作为图像名称的对应 - fldName
?
如有任何帮助,我们将不胜感激。
$stmt = $conn->prepare("DELETE FROM `tblImage` WHERE `tblImage`.`fldImageID` = ?");
$stmt->bind_param("ss", $imgTitle, $_POST['delete']) or die($stmt->error);
你有一个问号(参数),所以两个变量太多了。
这应该变成
$stmt = $conn->prepare("DELETE FROM `tblImage` WHERE `tblImage`.`fldImageID` = ?");
$stmt->bind_param("s", $_POST['delete']) or die($stmt->error);
您似乎只有一个参数 ?
,但您有 "ss"
,请删除其中一个并重新运行查询。