功能不更新数据库

时间:2014-03-27 00:34:47

标签: php sql pdo

我最近在摆弄我的代码并遇到了一个问题,我无法弄清楚它在哪里。我添加了"更新site_sync SET test = test + 1"代码最后,这是完全正常的。但其他一切似乎都在某个地方捕捉,而且我的网站上的任何地方都没有丢失错误。

function skynetInfect($db)
{
    $sql = "SELECT skyNet FROM site_sync;";
    $sql .= "UPDATE site_sync SET test = test+1;";
    $sql .= "SELECT count(*) FROM starinformation WHERE starOwner = -1;";
    $que = $db->prepare($sql);
    try { $que->execute();
    $que->nextRowset();
    while($row = $que->fetch(PDO::FETCH_BOTH))
    {
        if($row[0] == 'on')
        {
            $que->nextRowset();
            $row2 = $que->fetch(PDO::FETCH_BOTH);
            $x = $row2[0];
            echo $x;
            $sql = "UPDATE starinformation SET starOwner = -1 WHERE starOwner <> -1 ORDER BY rand() LIMIT {$x};";
            $que = $db->prepare($sql);
                $que->bindParam('id', $rand);
            try{ $que->execute();}catch(PDOException $e) { echo $e->getMessage();}
        }
    }
    }catch(PDOExceptions $e) { echo $e->getMessage();}
}

2 个答案:

答案 0 :(得分:2)

您在内部$que条件内覆盖if。这发生在这里:

$sql = "UPDATE starinformation SET starOwner = -1 WHERE starOwner <> -1 ORDER BY rand() LIMIT {$x};";
$que = $db->prepare($sql); // use a variable name other than $que here

另外,你有没有理由使用PDO::FETCH_BOTH

答案 1 :(得分:0)

$sql = "SELECT skyNet FROM site_sync;";
$sql .= "UPDATE site_sync SET test = test+1;";
$sql .= "SELECT count(*) FROM starinformation WHERE starOwner = -1;";
$que = $db->prepare($sql);

我认为您不能使用PDO执行多个查询


$que = $db->prepare($sql);

我在查询中看不到任何参数,为什么要做好准备?