PHP MYSQL在while循环中更新几条记录

时间:2017-04-17 19:46:58

标签: php mysql mysqli

我有那个简单的PHP代码:

$sql= 'SELECT ID, fb_postid, scheduled FROM `posts` WHERE clicks = "" AND fb_postid !="" AND scheduled < NOW() order by ID ASC LIMIT 10;';

$result = mysqli_query($link, $sql);
print_r($result);

while ($row = mysqli_fetch_assoc($result)) {
            $clicks=fbcall($fbtoken, $row['fb_postid']);
            $update="UPDATE `posts` SET `clicks`='".$clicks."' WHERE id='".$row['ID']."'";
            $result = mysqli_query($link, $update);     
            print("POSTID: " . $row['fb_postid'] . " - Clicks: " . $clicks ."<br>");    
 }; 

MYSQL SELECT通过While循环中的行从DB循环中获取10行,从函数fbcall获取“click”,然后使用“click”到db的值更新所有10行。如果我运行没有更新的代码我得到10个结果打印但如果我运行mysqli_update我只是更新1行。有人知道为什么?

2 个答案:

答案 0 :(得分:1)

您正在使用$result变量来迭代第一个查询中的行列表。

但是你在循环中给$ result一个新值,清除那里的任何东西。

只需使用两个不同的变量,你就可以了。尝试这样的事情:

$sql= 'SELECT ID, fb_postid, scheduled FROM `posts` WHERE clicks = "" AND fb_postid !="" AND scheduled < NOW() order by ID ASC LIMIT 10;';

$result = mysqli_query($link, $sql);
print_r($result);

while ($row = mysqli_fetch_assoc($result)) {
            $clicks=fbcall($fbtoken, $row['fb_postid']);
            $update="UPDATE `posts` SET `clicks`='".$clicks."' WHERE id='".$row['ID']."'";
            $result2 = mysqli_query($link, $update);     
            print("POSTID: " . $row['fb_postid'] . " - Clicks: " . $clicks ."<br>");    
 }; 

答案 1 :(得分:0)

修复它并使用准备好的更新语句构建:

if (window.innerHeight != windowExpectedSize){ ... }
相关问题