【问题标题】:Issue updating values in Database from mySQL query on PHP site从 PHP 站点上的 mySQL 查询更新数据库中的值
【发布时间】:2012-04-20 18:29:05
【问题描述】:

一直在修改我的网站,它是一个座位预订网站。由于明显的原因,仍然处于 alpha 测试中,所以还没有向公众展示。

但是,我在更新数据库中的值时遇到了一些问题。

我会发布代码然后解释问题..

     else {

   $seatID = $_POST['form_submitted'];

$query1 = "SELECT seatTaken FROM SEATS WHERE seatNo = '$seatID'";
            $result = mysql_query($query1);  
            while($row = mysql_fetch_array($result))
            {
               $taken = $row['seatTaken'];  
            }


$query2 = "SELECT passNo FROM PASSENGER WHERE username = '$loggedinuser'";
            $result = mysql_query($query2);  
            while($row = mysql_fetch_array($result))
            {
               $passno = $row['passNo'];  
            }


$query3 = "SELECT groupID FROM PASSENGER WHERE username = '$loggedinuser'";
            $result = mysql_query($query3);  
            while($row = mysql_fetch_array($result))
            {
               $groupno = $row['groupID'];  
            }

$query4 = "SELECT flightNo FROM PASSENGER WHERE username = '$loggedinuser'";
            $result = mysql_query($query3);  
            while($row = mysql_fetch_array($result))
            {
               $flightno = $row['flightNo'];  
            }


  // if ($taken = 0) {

 $update = mysql_query("UPDATE PASSENGER SET seatNo = $seatID WHERE username = '$loggedinuser'");
 $update2 = mysql_query("UPDATE SEATS SET seatTaken = 1, passNo = '$passNo', groupID = '$groupid' WHERE seatNo = '$seatID'");
 // AND flightNo = '$flightno'"
   echo '<meta http-equiv="refresh" content="5;url=http://www.mywebsite.com/">';
       echo mysql_error();

  //}

 }

 ?>

现在用户将在之前的表单中选择他们的座位,因此:

 $seatID = $_POST['form_submitted'];

但是,在我的查询的底部,运行此 PHP 代码时数据库中唯一实际更改的值是“seatTaken”的布尔值,因为它确实从 0(未占用)更改为 1(占用)。

我的数据库中的字段 passNo 和 groupID 不更新这些查询中引用的此处:-

 $update = mysql_query("UPDATE PASSENGER SET seatNo = $seatID WHERE username =     '$loggedinuser'");
 $update2 = mysql_query("UPDATE SEATS SET seatTaken = 1, passNo = '$passNo', groupID = '$groupid' WHERE seatNo = '$seatID'");

有人可以帮忙吗?非常感谢!

汤姆

【问题讨论】:

  • 在运行UPDATE 的位置,打印出查询和exit()。要进行调试,请手动运行您的数据库并查看它为什么没有运行。 WHERE 子句可能不正确?
  • 你可能知道这一点,但你在这段代码中也存在 SQL 注入漏洞。使用参数绑定,或者至少转义你的污染输入。

标签: php mysql web phpmyadmin


【解决方案1】:

注意变量命名和字符串引用

当您在 mysql 中查找值时,它们通常需要是字符串文字(添加引号)。 你的另一个问题是你的变量名:

$update = mysql_query("UPDATE PASSENGER SET seatNo = '$seatID' WHERE username = '$loggedinuser'");
$update2 = mysql_query("UPDATE SEATS SET seatTaken = 1, passNo = '$passno', groupID = '$groupno' WHERE seatNo = '$seatID'");
  • $passno 与 $passNo
  • $groupid 与 $groupno

您还应该确保正确转义来自用户 http://php.net/manual/en/function.mysql-real-escape-string.php 的任何输入

【讨论】:

    【解决方案2】:

    在您的代码中看不到如何生成 $groupid、$passNo、$seatID 的值。更新时是否设置了这些变量? (只需回显 SQL 代码即可查看正在向您的数据库发送什么查询)

    如果 groupid 是表单中字段的名称,也许您应该尝试从您的发布请求中获取变量,例如 $_POST['groupid']。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 2021-06-23
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多