检查mysql行是否存在于php数组的foreach循环中


Check if mysql row exisits within foreach loop of php array

我有一个项目数组,我正在循环它,并检查数据库中是否已经存在该值,如果存在,我想更新它,如果没有,我想创建一个新条目。数组中的第一个项被看到并返回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'");