2016-02-29 50 views
0

因此,我运行这个PHP脚本作为cron作业更新记分牌上的用户点。更新多个编辑的Mysql

<?php 
$servername = "localhost"; 
$username = "xxx"; 
$password = "xxx"; 
$dbname = "xxx"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "UPDATE scoreboard SET points='23' WHERE id=2500"; 
if ($conn->query($sql) === TRUE) { 
    echo "Record updated successfully"; 
} else { 
    echo "Error updating record: " . $conn->error; 
} 

$conn->close(); 
?> 

这个工作正常,一次只能有一个id。我怎样才能用不同的点分别编辑3 id?谢谢。

+0

其中id在(2500,2501,2502) –

+2

问题3更新。并注意''''和'''在mysql或php中不是有效的引号字符。不要使用文字处理器来编辑您的代码。 –

+0

如果你必须......你可以更新记分板设置点= ID = 2500时的情况,然后当Id ='XXXX'时为'23',然后当ID ='YYYY'时'YY',那么'XX'结束,其中ID为(2500, 'XXXX','YYYY')',但单个更新在这里更有意义;或者您可以将大容量插入写入表并从该表更新,如果您有大量记录用不同的值更新。 – xQbert

回答

0

如果你一定要..你能...

update scoreboard 
set points = case when ID = 2500 then '23' 
        when Id = 'XXXX' then 'YY' 
        when ID = 'YYYY' then 'XX' end 
where ID in (2500,'XXXX','YYYY') 

但是单个更新在这里更有意义。如果您有数千个记录要使用不同的值进行更新,则可以将批量插入写入临时表并从该表进行更新。这可能会更快。

2

您通常不会更新记分牌用户列表中每个查询的3个ID。一次有一个请求可以正常工作,包括3个不会更快,除非这三个玩家都有相同的分数,但是你特别提到你需要3个ID,每个分数有不同的分数。

如果它是关于性能/效率,使用准备好的语句(mysqli's prepare)和您prepare()在你之后使用一个循环:

  1. bind()参数(每次不同的用户/分)
  2. ​​