我有一个项目数组,我正在循环它,并检查数据库中是否已经存在该值,如果存在,我想更新它,如果没有,我想创建一个新条目。数组中的第一个项被看到并返回true,但第一个项之后的任何项都返回0,即使我知道它在数据库中具有正确的item_name和ticket_id。
在询问之前,我曾尝试过进行研究,但在这一点上被难住了。感谢您提前提供的帮助。
if($func == 'edit') {
foreach ($addItem as $key => $value) {
if (empty($key) || $key=='amount_paid') {
continue;
}
$ticket_items = mysql_query("SELECT * FROM ticket_items WHERE ticket_id = '$ticket_id' AND item_name = '$key'");
if (mysql_num_rows($ticket_items)) {
print 'Updated '. $key ."'n";
mysql_query("UPDATE ticket_items set item_name='$key', item_price='$value' WHERE ticket_id='$ticket_id'");
} else {
print 'Created '. $key ."'n";
mysql_query("INSERT into ticket_items (ticket_id, item_name, item_price) VALUES ('$ticket_id', '$key', '$value')");
}
}
}
请注意,在UPDATE语句中,无论item_name如何,都会更新具有相同$ticket_id的每一行。应该是:
UPDATE ticket_items set item_name='$key', item_price='$value' WHERE ticket_id='$ticket_id' AND item_name='$key';
在第一次更新时,您正在重置数据库中所有Tickets的数据。
mysql_query("UPDATE ticket_items set item_name='$key',item_price='$value'WHERE ticket_id='$ticket_id'");
上面的一个将该票证的所有行的键和值设置为相同的值。
你应该试试下面的smt:
mysql_query("UPDATE ticket_items set item_price='$value'WHERE ticket_id='$ticket_id'and item_name='$key'");