php - 使用php对sql表执行操作

标签 php html mysql

我正在学习sql并且我创建了一个表

products 具有列 itempricebasewholesale

我想要实现的是让用户输入一个数字(假设用户输入15)。那么这意味着他们想将所有3栏(价格、基础和批发)的价格提高15%。

这是我的输入和提交按钮

<html>
<head><title>Product table</title></head>
<body>
<form>
Enter the percentage increment:
   <input type="number" name="inc">
   <input type="submit" value="Increment" id="Increment" name="Increment">
<?php
if($_REQUEST['Increment']=='Increment') {
  $conn = mysqli_connect("localhost","test","pwd","db")or die("Error " . mysqli_error($conn));      

    $sql="SELECT 'price' from products"; 
  $result = $conn->query($sql) or die("Error in the query..." .mysqli_error($conn));
   // $count=mysqli_num_rows($result);
    $inc = $_REQUEST['inc'];
    $incmod = $inc/100;


while($row = mysqli_fetch_array($result)){
    $sql1="update products set price = ($row['price']-($row['price']*$incmod))";
    $conn->query($sql1) or die("Error in the query..." .mysqli_error($conn));
  }
}
?>
</form>
</body>
</html>

这是我尝试做的事情,但没有成功。有没有什么办法解决这一问题?我知道有一些明显的错误,例如 $_REQUEST['inc] 和 Update 语句,但我无法正确执行。另外,我仍在学习从 mysql 到 mysqli 的过渡,所以语法中可能也存在一些错误。

执行上述代码时会发生什么:什么也没有发生。该表不会更新为新值。它保持原样。没有出现错误

注意:欢迎各种批评,因为这是我的学习点。但也请给出投反对票的理由,以便我可以提出更好的问题

根据建议,我减少了代码以删除不需要的代码行。这是新代码

<html>
<body>
<form>
<br/>
Enter the percentage increment:
<input type="number" name="inc" id="inc" >
<input type="submit" value="Increment" id="Increment" name="Increment">
<br/>
<?php

if(isset($_REQUEST['Increment'])) {
$inc = $_REQUEST['inc'];
$incmod = $inc/100;
    echo "true";
    $mysqli = new mysqli("localhost","test","pwd","db")or die("Error in the query..." .mysqli_error($conn));

  $mysqli->query("UPDATE products SET price=price+(price*$incmod), baseprice=baseprice+(baseprice*$incmod), wholesale=wholesale+(36months*$incmod)");


   $mysqli->close();
}
?>
</form>
</body>
</html>  

感谢您的所有意见。不知何故 $incmod 没有打印任何内容。我尝试了这里建议的一些事情并创建了一个新的 php 页面。最后,变量开始从输入类型获取值,并且代码运行正常。

最佳答案

有几个错误导致它无法工作。主要的可能是您尝试从 $result 中获取数组,而您从未设置此 $result。

除此之外,您根本不需要此处的选择查询。您可以在单个更新查询中一次性提高/降低所有价格:

    $sql = "UPDATE products SET price=price+(price*$incmod), base=base+(base*$incmod), wholesale=wholesale+(wholesale*$incmod)";
    $conn->query($sql) or die("Error in the query..." .mysqli_error($conn));

此外,我建议通过变量的存在而不是其值来测试表单提交:

if(isset($_REQUEST['Increment'])){ ...

更新: 您没有输出,因为存在致命语法错误,并且您的 PHP 环境可能设置为不显示错误。错误在这一行:

    $sql1="update products set price = ($row['price']-($row['price']*$incmod))";

您不需要在双引号字符串内使用单引号作为数组键。该行可能是:

    $sql1="update products set price = ($row[price]-$row[price]*$incmod))";

但是,正如我之前提到的,您不需要这里的整个循环。实际上,如果它有效,它将多次更新整个表(所有行)(与该表中的行数相同的次数)。您只需要一个更新查询。没有获取,没有循环,只有一个执行程序。

附注很抱歉没有在评论中继续讨论,而是发布答案,但我无法发表评论,因为它需要 50 声望,而我有 21 声望。

关于php - 使用php对sql表执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35028256/

相关文章:

php - 从php错误执行python文件

html - 将级联 ul 显示为内联 block 不起作用

html - 在 Outlook 中向 TD 添加间距(HTML 电子邮件)

javascript - jQuery 滚动到顶部并滚动到下一部分

MySQL优化——索引的使用

c# - 从 MySQL 中用 C# 选择一行?

php - 从阿拉伯字符串 Php 中获取最后一个字母

php - 动态获取 Amazon S3 存储桶中文件的大小

php - 维基百科 Curl 请求错误

mysql - 通过组合表来增加 JOIN 查询响应时间