在一个查询中更新两个不同的表


updating two different tables in one query

好的,所以我需要在页面加载时更新这两个表。下面是代码:

<?php include'connects.php';
 //Test if it is a shared client
if (!empty($_SERVER['HTTP_CLIENT_IP'])){
 $ip=$_SERVER['HTTP_CLIENT_IP'];
//Is it a proxy address
}elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
$ip = ip2long($ip);
mysqli_query($con,"INSERT INTO visits (ip_adress) VALUES ('$ip') ON DUPLICATE KEY                                                                                 
UPDATE         visit = visit + 1");
mysqli_query($con,"UPDATE ip_visits SET total_visits = total_visits + 1");
mysqli_close($con);
?>

现在我有了第二个表,它需要做与顶部表相同的功能:

 mysqli_query($con,"INSERT INTO indVisits (ip_adress) VALUES ('$ip') ON DUPLICATE KEY  
 UPDATE visits = visits + 1");
 mysqli_query($con,"UPDATE totalVisits SET visit = visit + 1");

您可以使用mysqli多查询:http://php.net/manual/en/mysqli.multi-query.php

如果需要将相同的元组存储在两个不同的表中,还应该考虑重新思考数据库的设计。

您可以执行类似的操作

mysqli_query($con,"INSERT INTO visits (ip_adress) VALUES ('$ip') ON DUPLICATE KEY                                                                                
UPDATE         visit = visit + 1; 
UPDATE ip_visits SET total_visits = total_visits + 1");

查询字符串中的分号将结束一个查询,并发出另一个查询的开始信号。你不需要打两个单独的电话,只需要打一个。