php
2017-04-18 81 views 0 likes 
0

我想在数据库中更新我的值时出现问题。没有显示错误。即使值未更新,页面也会按照指示重新定向。 这是用户输入的代码..使用PHP更新数据库值

echo "<td bgcolor='#FFFFFF'><input id='id' name='pro_id[]' type='text'></td>"; 
    echo "<td bgcolor='#FFFFFF'><input id='name' name='pro_name[]' type='text'></td>"; 
    echo "<td bgcolor=‘#FFFFFF’><input id='quan' name='pro_quan[]' type='text'></td>"; 

下面是我的插入值的代码..

$query = "INSERT INTO product (username, pro_id, pro_name, pro_quan) VALUES "; 
for ($i = 0; $i < count($_POST['pro_id']); $i++) { 
$query .= " ('{$username}', '{$id[$i]}', '{$name[$i]}', '{$quan[$i]}'),"; 
} 
$query = substr($query, 0, -1); 

$result = mysqli_query($con, $query) or die(mysqli_error($con)); 

插入代码做工精细。该值被插入到数据库中。以下是我的更新代码。

$sql = "SELECT * FROM product where username = '$username'"; 
foreach($_SESSION['product'] as $item) 
{ 
$id = $item['pro_id']; 
$name = $item['pro_name']; 
$quan = $item['pro_quan']; 
$sold = $item['pro_sold']; 
$sql="UPDATE product SET pro_id='".$id."', pro_name='".$name."', pro_quan='".$quan."', pro_sold='".$sold."' WHERE username = '".$username."'"; 
} 

$results=mysqli_query($con, $sql); 

该值无法更新。我不知道去了wrong.So,任何帮助将是appreciated.Thanks

+1

其中是更新查询中的WHERE子句。 – webpic

+1

对不起,我错过了 – June

+0

为什么输入标签中的名称有括号? –

回答

0

感谢球员们的所有帮助。我通过使用for循环来更改我的更新代码。 下面是解决方案..

for ($i = 0; $i < count($_POST['pro_id']); $i++) { 
$sql="UPDATE product SET pro_name='".$name[$i]."', pro_quan=".$quan[$i].", pro_sold=".$sold[$i]." WHERE pro_id=".$id[$i].""; 
$results=mysqli_query($con, $sql); 
} 
+0

如果您已设法解决您的问题,请将答案标记为已接受。 – Pyromonk

1

需要把SQL执行中foreac,如下...

$sql = "SELECT * FROM product where username = '$username'"; 
$results=mysqli_query($con, $sql); 
while($row = mysqli_fetch_assoc($results)){ 
$id = $row['pro_id']; 
$name = $row['pro_name']; 
$quan = $row['pro_quan']; 
$sold = $row['pro_sold']; 
$sql="UPDATE product SET pro_id='".$id."', pro_name='".$name."', pro_quan='".$quan."', pro_sold='".$sold."' WHERE pro_id = '".$id."' "; 
mysqli_query($con, $sql); 
} 
+0

我试过了,但值仍然不能更新 – June

+0

注意:未定义的索引:F:\ xampp \ htdocs中的产品\第15行上的新文件夹\ upProduct.php 警告:提供的参数无效对于F:\ xampp \ htdocs \新建文件夹\ upProduct.php在第15行的foreach()在第15行 注意:未定义的变量:结果在第27行的F:\ xampp \ htdocs \ New文件夹\ upProduct.php – June

+0

仍然不工作,它直接将所有的值更新为0. – June

1

$id$quan在您更新查询是单引号之间。我对你的数据库结构一无所知,但有些东西告诉我这些值是数字而不是字符串。以下是更新行:

$sql="UPDATE product SET pro_id=".$id.", pro_name='".$name."', pro_quan=".$quan.", pro_sold='".$sold."'";

您可能必须卸下周围$sold报价为好。

+0

我改变了它,但仍然没有工作。任何想法? – June

+0

@June,我不太了解你的代码。你为循环的每次迭代赋值'$ sql',为什么?你试图用你的代码实现什么,以及你试图存储什么类型的值? '$ _SESSION ['product']'是一个数组吗?这些是我的一些问题。 – Pyromonk

+0

好的,现在我必须在数据库中插入几个产品。所以对于产品,我需要更新产品的价值,比如产品数量,产品销售量等等,因为用户可能输入错误。 – June

1

首先检查是否是主键的pro_id。 如果它是主键而不是以这种方式写查询。

$sql="UPDATE product SET pro_name='".$name."', pro_quan='".$quan."', pro_sold='".$sold."' WHERE pro_id = '".$id."' "; 

因为如果列的唯一性是干扰,主键会生成错误。

相关问题