user3462020
user3462020

Reputation: 61

Function not updating database

I recently was fiddling with my code and ran into an issue and i cannot figure out where it is. I added the "Update site_sync SET test = test+1" code last, which is firing perfectly fine. but everything else seems to be catching somewhere and it's not throwing errors anywhere on my site.

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();}
}

Upvotes: 0

Views: 31

Answers (2)

Krimson
Krimson

Reputation: 7674

$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);

I don't think you can execute multiple queries using PDO


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

I don't see any parameter in your Query so why the prepare?

Upvotes: 0

Mike Brant
Mike Brant

Reputation: 71394

You are overwriting $que inside the inner if conditional. That happens here:

$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

Also, is there any reason you are actually using PDO::FETCH_BOTH?

Upvotes: 2

Related Questions