只有产品的第一个id被添加到mysql表中

时间:2013-06-29 07:15:07

标签: php mysql

我第一次使用这个,所以我希望能得到所需的帮助

大家好,我有2张桌子 - tblproduct和tblretprod。 我将产品详细信息插入tbl产品,prod_id为自动增量 其他字段是prod_name,prod_brand,prod_desc,prod_photo,cat,subcat

我有另一个表tblretprod,其中包含字段id,user_id,prod_id,prod_price

我可以成功添加我的产品

我正在显示我在表格中添加的所有产品,我将回显文本字段以输入产品价格和添加按钮

单击添加按钮,会话的user_id,prod_id和prod_price应插入tblretprod

正确插入了

user_id和prod_price,但未添加每个产品唯一的prod_id。只有第一个prod_id,即在任何地方添加

这是我点击添加

时添加产品的代码
<?php
    session_start();
    include('db_connect.php');
    $username = $_SESSION['username'];
    $prod_price = $_POST['prod_price'];
    $url='retprod.php';
    $sql=mysql_query("select user_id from tbllogin where username = '$username'");
    $row = mysql_fetch_array($sql);
    $sql1 = mysql_query("select * from tblproduct");
    $row1 = mysql_fetch_array($sql1);
    $sql2 = mysql_query("insert into tblretprod (user_id, prod_id, prod_price) values   ('$row[user_id]', '$row1[prod_id]', '$prod_price')");
    echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
    echo "<script>alert('This product has been added successfully.')</script>";
?>

我试过这个: -

$prod_id = $_POST['prod_id'];
// or
$prod_id = $_GET['prod_id'];
$sql1 = mysql_query("select * from tblproduct where prod_id='$prod_id'");

这不起作用

我想简单地做的是当用户用产品价格填写文本字段并点击添加按钮时,产品的相对user_id,prod_id和输入的价格都存储在tblretprod中。 user_id和price正在保存,但不是相对的prod_id


我正在尝试以下代码,我知道它可以工作但我不知道代码中哪里有错误。有人可以帮帮我吗?我知道我正在使用一个已弃用的mysql代码,但我的项目已接近完成。

while($row = mysql_fetch_assoc($sql)){
 extract($row); 

 echo "<tr>";
 echo '<td style="text-align:center;"><img height="100" width="100"   src="Images/Products/'.$row['prod_photo'].'" alt="'.$row['prod
  _name'].'" /></td>';
  echo "<td style="text-align: center;">".$row['prod_name']."</td>";
  echo "<td style="text-align: center;">".$row['prod_brand']."</td>";
  echo "<td>"."<form name=\"price\" method=\"post\" action=\"ret_addprod.php\">".
    "<input type=\"hidden\" name=\"prod_id\" value=\"'.$row['prod_id'].'\" />.
    "<center><input type=\"text\" name=\"prod_price\" />.
    "<input type=\"submit\" value=\"Add\" /></form>"."</td>";


}

2 个答案:

答案 0 :(得分:1)

您必须使用while循环来迭代所有值。

while($row1 = mysql_fetch_array($sql1)) {
    $sql2 = mysql_query("insert into tblretprod (user_id, prod_id, prod_price) 
    values   ('$row[user_id]', '$row1[prod_id]', '$prod_price')");
}

在您当前的代码中,您使用的是$row1 = mysql_fetch_array($sql1),它只会为您提供第一个值,而不是所有值。

注意:切换为MySQLiPDO因为mysql_*已被弃用。

答案 1 :(得分:0)

您没有在tblproduct查询中添加过滤器。因此它将始终是该表的第一行将被插入。

更改$sql1 = mysql_query("select * from tblproduct");

类似于$sql1 = mysql_query("select * from tblproduct WHERE id = '$filter'");