gpt4 book ai didi

php - Mysqli 多查询不更新所有字段

转载 作者:行者123 更新时间:2023-11-29 06:14:28 24 4
gpt4 key购买 nike

我会先声明我对任何类型的编程都相当陌生。我正在处理视频商店库存系统的学校作业,但我在处理多查询语句时遇到了问题。我正在尝试更新不同表中的 2 个字段。我已经使用增量运算符成功更新了视频表的库存,但租赁表的归还日期不会更新。我没有收到任何错误。但是,数据库中的空字段没有变化。

我将上传我认为相关的代码。

这是表单的 HTML

<form class="form-horizontal" name="returnform" id="returnform" action="" method="post">
<div align="center" class="form-group">
<label class="col-sm-2">Rental number</label>
<div class="col-sm-10">
<input class="form-control" name="Rental_ref_num" type="text" name="s" placeholder="Enter reference number..." required="">
</div>
</div>

<input id="Returned_date" name="Returned_date" type="hidden">
<input id="Movie_id" name="Movie_id" type="hidden">

<div align="center">
<input type="submit" value="Return">
</div>
</form>

我有一些 Javascript 可以设置当前日期并将其发送到隐藏的表单字段。

<script>
var mydate=new Date()
var theyear=mydate.getYear()
if (theyear < 1000)
theyear+=1900
var theday=mydate.getDay()
var themonth=mydate.getMonth()+1
if (themonth<10)
themonth="0"+themonth
var theday=mydate.getDate()
if (theday<10)
theday="0"+theday

var displayfirst=theyear
var displaysecond=themonth
var displaythird=theday

document.returnform.Returned_date.value=displayfirst+displaysecond+displaythird

PHP 和查询

<?php
if ( ! empty( $_POST ) ) {
$mysqli = new mysqli( 'localhost', 'root', 'AMerica12', 'videostoremodel' );

$rd = $mysqli->real_escape_string($_POST['Returned_date']);
$rrf = $mysqli->real_escape_string($_POST['Rental_ref_num']);
////////////////////////////////////////////////////////////////////

$result = mysqli_query($mysqli,"SELECT Movie_id FROM rental_table where Rental_ref_num ='".$rrf."'");

$row = mysqli_fetch_array($result);
$name = $row['Movie_id'];
/////////////////////////////////////////////////////////////////////
$sql = "UPDATE `rental_table`
SET (`Returned_date` = '$rd')
WHERE (`Rental_ref_num` = '$rrf');";

$sql = "UPDATE `video_table`
SET `Amount_inventory` = `Amount_inventory` + 1
WHERE (`Movie_id` = '$name');";

$result = mysqli_multi_query($mysqli, $sql);

很抱歉发了这么长的帖子。但是,我已经搜索了几个小时,无论如何,我无法弄清楚为什么返回日期不会在 rental_table 中更新。再一次,我没有收到任何错误提示。

如有任何帮助,我们将不胜感激。

最佳答案

存在多个问题。一个是 SET 语句中第一个查询中的括号。没有理由在那里使用括号,也不允许在那里使用括号。改用这个:

$sql = "UPDATE `rental_table` 
SET `Returned_date` = '$rd'
WHERE (`Rental_ref_num` = '$rrf');"

其次,您必须连接查询,此时您正在用第二个查询覆盖第一个查询。所以使用这个:

$sql = "UPDATE `rental_table` 
SET `Returned_date` = '$rd'
WHERE (`Rental_ref_num` = '$rrf');";

$sql .= "UPDATE `video_table`
SET `Amount_inventory` = `Amount_inventory` + 1
WHERE (`Movie_id` = '$name');";

$result = mysqli_multi_query($mysqli, $sql)

与其这样做,我建议改为执行 2 个单独的查询,您还可以通过这种方式轻松实现错误捕获:

$sql = "UPDATE `rental_table` 
SET `Returned_date` = '$rd'
WHERE (`Rental_ref_num` = '$rrf');";
if (!mysqli_query($mysqli, $sql)) {
echo "Errormessage: ". mysqli_error($mysqli);
}

$sql = "UPDATE `video_table`
SET `Amount_inventory` = `Amount_inventory` + 1
WHERE (`Movie_id` = '$name');";
if (!mysqli_query($mysqli, $sql)) {
echo "Errormessage: ". mysqli_error($mysqli);
}

关于php - Mysqli 多查询不更新所有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36614658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com