我有一个项目数组,我正在循环并检查数据库中是否已存在该值,如果确实存在,我想更新它,如果不是,我想创建一个新条目。看到数组中的第一项并返回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')");
}
}
}
答案 0 :(得分:1)
在第一次更新时,您正在重置数据库中所有故障单的数据。
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'和item_name ='$ key'”);
答案 1 :(得分:1)
请注意,在UPDATE语句中,无论item_name如何,您都要更新具有相同$ ticket_id的每一行。它应该是:
UPDATE ticket_items set item_name='$key', item_price='$value' WHERE ticket_id='$ticket_id' AND item_name='$key';