如何插入或重复更新一组具有不同值的行

时间:2018-03-28 07:31:50

标签: php mysql

我在php中有一个数组

[
    0 =>[
        "pid" => 22,
        "uid" => 1,
        "count" => 4
    ],
    1 =>[
        "pid" => 11,
        "uid" => 12,
        "count" => 5
    ],
    2 =>[
        "pid" => 5,
        "uid" => 1,
        "count" => 1
    ],
    3 =>[
        "pid" => 5,
        "uid" => 12,
        "count" => 7
    ]
]

table
pid | uid | count

我想要做的是插入记录,如果没有预设pid和uid,则通过添加数组值来更新计数

2 个答案:

答案 0 :(得分:0)

您可以使用查询执行此操作:

$sql = "INSERT INTO table_users (pid, uid, count) VALUES ";
foreach($array as $arr){
     $sql .= "(".$arr['pid'].", ".$arr['uid'].", ".$arr['count']."),";
}

$sql = substr($sql, 0, -1);    // this statement will remove last comma which is added during foreach loop

$sql .= " ON DUPLICATE KEY UPDATE count=VALUES(count)";

此查询将自动检查表中是否存在pid-uid对,然后更新计数,否则插入记录。但请确保,pid和uid应该在表中设置为unqiue,否则此查询将不起作用。

答案 1 :(得分:0)

foreach($yourarrayname as $row)
{
$uid=$row->uid;
$pid=$row->pid;

$result=mysqli_query($connection,"select * from your_table where uid='$uid' and pid='$pid'");

if(mysqli_num_rows($result)>0)
{
 //update query here
}
else
{
//insert query here
}
}