Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新购物车-mysql表更新-while循环_Php_Mysql_Cart - Fatal编程技术网

Php 更新购物车-mysql表更新-while循环

Php 更新购物车-mysql表更新-while循环,php,mysql,cart,Php,Mysql,Cart,新来的家伙! 我正在构建一个由mysql驱动的定制购物车,我正在尝试按数量逐项更新购物车。似乎我做错了什么,因为当我尝试更新数量时,它只更新最后一项。我把代码贴在下面。任何帮助都将不胜感激。提前谢谢 1.cart.php: $sql = "select * from orders"; $result = mysql_query($sql); $num = mysql_num_rows($result); echo "Στοιχεία: ".$num; ?&

新来的家伙! 我正在构建一个由mysql驱动的定制购物车,我正在尝试按数量逐项更新购物车。似乎我做错了什么,因为当我尝试更新数量时,它只更新最后一项。我把代码贴在下面。任何帮助都将不胜感激。提前谢谢

1.cart.php:
    $sql = "select * from orders";
    $result = mysql_query($sql);
    $num = mysql_num_rows($result);
    echo "Στοιχεία: ".$num;
    ?>
    <form name="cart" method="post" action="updatecart.php">
      <table border="2">
        <tr>
          <td>Α/Α</td>
          <td>img_name</td>
          <td>Reprints</td>
          <td>Color</td>
        </tr>
        <?php
        if($num){
            while ($row = mysql_fetch_array($result)){
             ?>
                <tr>
                  <td><?php  echo $row['item_id']; ?></td>
                  <td><?php echo $row['img_name']; ?></td>
                  <td><input type="number" name="quantity" value="<?php echo $row['quantity']; ?>"></td>
                  <input type="hidden" name="item_id" value="<? echo $row['item_id']; ?>">
                  <td><?php echo $row['color']; ?></td>
                </tr>
            <?php
            }
        }

            ?>
      </table>
      <input type="submit" name="update" value="Update Cart" />
      <input type="button" name="2checkout" value="Proceed to Checkout" />
</form>
2.updatecart.php

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<?php
    $database_name = "vog";
    $conn = mysql_connect("localhost","root","toor");
    mysql_select_db($database_name);

    $num = 2; //na to ferw me session meta edw!
    if(isset($_POST['update'])){
        $item_id = $_POST['item_id'];
        $i=1;

        while($i<=$num){
            $item_id = $_POST['item_id'][$i];
            $quantity = $_POST['quantity'];
            $sql2 = "update orders SET quantity = '$quantity' where item_id = '$item_id' ";
            $result2 = mysql_query($sql2) or die ("Error in query: $result2");
            $i++;
        }
    }

    if(isset($result2)){
        header("Location:cart.php");
    }
?>

到目前为止,它只更新了最后一条记录

您的问题在于HTML表单中字段的名称:

<input type="number" name="quantity" value="<?php echo $row['quantity']; ?>">
<input type="hidden" name="item_id" value="<? echo $row['item_id']; ?>">

我想您是想将它们称为quantity[]和item\u id[],这样以后它们会在$\u POST变量中以数组的形式出现,现在它们相互覆盖,使得$\u POST['item\u id']只包含数据库中的最后一个id。

您的问题在于HTML表单中字段的名称:

<input type="number" name="quantity" value="<?php echo $row['quantity']; ?>">
<input type="hidden" name="item_id" value="<? echo $row['item_id']; ?>">

我想你是想把它们称为quantity[]和item\u id[],这样它们以后会在$\u POST变量中以数组的形式出现,现在它们会相互覆盖,使得$\u POST['item\u id']只包含数据库中的最后一个id。

在1.cart.php中使用输入作为数组:

<input type="number" name="quantity[<?php  echo $row['item_id']; ?>]" value="<?php echo $row['quantity']; ?>">
<input type="hidden" name="item_id[<?php  echo $row['item_id']; ?>]" value="<? echo $row['item_id']; ?>">

在1.cart.php中,将输入用作数组:

<input type="number" name="quantity[<?php  echo $row['item_id']; ?>]" value="<?php echo $row['quantity']; ?>">
<input type="hidden" name="item_id[<?php  echo $row['item_id']; ?>]" value="<? echo $row['item_id']; ?>">

您需要告诉PHP您正在为提交的表单项使用数组。方法是将每个输入量的名称设为[]。您还可以将项ID作为键直接放置在数组中。在cart.php中,您可以在循环中执行以下操作:

<input type="number" name="quantity[<?php echo $row['item_id']; ?>]" 
                     value="<?php echo $row['quantity']; ?>"/>

您需要告诉PHP您正在为提交的表单项使用数组。方法是将每个输入量的名称设为[]。您还可以将项ID作为键直接放置在数组中。在cart.php中,您可以在循环中执行以下操作:

<input type="number" name="quantity[<?php echo $row['item_id']; ?>]" 
                     value="<?php echo $row['quantity']; ?>"/>

各地的PHP程序员联合会打电话给我,给我添加了一条评论:在编写另一行PHP代码之前,首先阅读一下SQL注入。此代码使您的数据库对黑客完全开放。检查您对反sql注入测量有何建议?@EvanSap:使用mysql\u real\u escape\u string函数。。另请参考@EvanSap每当您将字符串从一种语言(例如PHP)嵌入到另一种语言(例如SQL或HTML)时,您需要将字符串转换为正确的语言,否则您将遇到问题。要从PHP字符串转换为SQL,可以使用mysql\u real\u escape\u字符串。要从PHP字符串转换为HTML,可以使用htmlspecialchars。这不仅可以防止黑客滥用您的系统,还可以解决当有人想将MacDonald's写入数据库时出现的问题,或者我和各地的PHP程序员联盟打电话给我添加一条评论:在您编写另一行PHP代码之前,先阅读一下SQL注入。此代码使您的数据库对黑客完全开放。检查您对反sql注入测量有何建议?@EvanSap:使用mysql\u real\u escape\u string函数。。另请参考@EvanSap每当您将字符串从一种语言(例如PHP)嵌入到另一种语言(例如SQL或HTML)时,您需要将字符串转换为正确的语言,否则您将遇到问题。要从PHP字符串转换为SQL,可以使用mysql\u real\u escape\u字符串。要从PHP字符串转换为HTML,可以使用htmlspecialchars。这不仅可以防止黑客滥用您的系统,还可以解决当有人想将MacDonald的系统写入数据库时出现的问题,或者我非常感谢您的帮助。它可以正常工作!现在,我可能需要添加针对sql注入的保护措施。非常感谢您的帮助。它可以正常工作!现在,我可能需要添加针对sql注入的保护措施。您可以通过投票选出他们的答案并接受一个来感谢他们=你可以通过投票给别人并接受他们的答案来感谢他们=