Jump to content

MySQL: supplied argument is not a valid resource


purefusion

Recommended Posts

I've got a SELECT script in my php document that get's current data. And an UPDATE script that replaces the data with modified data. The problem is, I get these errors:

 

mysql_fetch_array(): supplied argument is not a valid MySQL result resource.

 

mysql_num_rows(): supplied argument is not a valid MySQL result resource.

 

[!--PHP-Head--][div class=\'phptop\']PHP[/div][div class=\'phpmain\'][!--PHP-EHead--]

$query = \"SELECT * FROM conversion_tracking WHERE referrer = \'{$_POST[\'cpc\']}\' LIMIT 1\";

$result = mysql_query ($query);

while ($row = mysql_fetch_array($result)) {

    $seconverts = $row[\'oct\']; //oct is the row I want to increment by 1 (currently 0)

    $seconverts++;

    echo $seconverts; //printed as an error correcting technique

}

$num = mysql_num_rows($result);

if ($num == 1) {

     $query = \"UPDATE conversion_tracking SET oct = $seconverts WHERE referrer = \'{$_POST[\'cpc\']}\' LIMIT 1\";

     $result = mysql_query ($query);

}[/span][!--PHP-Foot--][/div][!--PHP-EFoot--]

 

Any ideas as to errors? when I echo seconverts, it prints 1111. If it got data from the database, and incremented the value, it should read 1, because currently the value in the db is 0.

 

Thanks so much!

Link to comment
Share on other sites

you do not need a select and update for incremeneting; just use:

 

[!--sql--][div class=\'sqltop\']SQL[/div][div class=\'sqlmain\'][!--sql1--][span style=\'color:blue;font-weight:bold\']update[/span] table set field=field+1 where id=1 [!--sql2--][/div][!--sql3--]

 

if you still have trouble, post your most recent code.

Link to comment
Share on other sites

effigy, thanks tons for that. I wasn't sure if that could be done.

 

 

I'm still getting a resource error on the mysql_affected_rows function.

 

 

new code:

 

[!--PHP-Head--][div class=\'phptop\']PHP[/div][div class=\'phpmain\'][!--PHP-EHead--]

[span style=\"color:#0000BB\"]<?

[/span][span style=\"color:#007700\"]require_once([/span][span style=\"color:#DD0000\"]\"/home/novav2/mysql_connect.php\"[/span][span style=\"color:#007700\"]);

[/span][span style=\"color:#0000BB\"]$mon [/span][span style=\"color:#007700\"]= [/span][span style=\"color:#0000BB\"]date[/span][span style=\"color:#007700\"]([/span][span style=\"color:#DD0000\"]\'M\'[/span][span style=\"color:#007700\"]);

[/span][span style=\"color:#0000BB\"]$ref [/span][span style=\"color:#007700\"]= [/span][span style=\"color:#DD0000\"]\'google\'[/span][span style=\"color:#007700\"];

[/span][span style=\"color:#0000BB\"]$query [/span][span style=\"color:#007700\"]= [/span][span style=\"color:#DD0000\"]\"UPDATE conversion_tracking SET $mon=$mon+1 WHERE referrer=\'google\' LIMIT 1\"[/span][span style=\"color:#007700\"];

[/span][span style=\"color:#0000BB\"]$result [/span][span style=\"color:#007700\"]= [/span][span style=\"color:#0000BB\"]mysql_query[/span][span style=\"color:#007700\"]([/span][span style=\"color:#0000BB\"]$query[/span][span style=\"color:#007700\"]);

if ([/span][span style=\"color:#0000BB\"]mysql_affected_rows[/span][span style=\"color:#007700\"]([/span][span style=\"color:#0000BB\"]$result[/span][span style=\"color:#007700\"]) == [/span][span style=\"color:#0000BB\"]1[/span][span style=\"color:#007700\"]) {

    echo [/span][span style=\"color:#DD0000\"]\" Done.\"[/span][span style=\"color:#007700\"];

}

 

[/span][span style=\"color:#0000BB\"]?>

[/span]

[/span][!--PHP-Foot--][/div][!--PHP-EFoot--]

Link to comment
Share on other sites

The error is actually a warning:

 

Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in /home/novav2/public_html/pages/php_mysql_testing.php on line 15

 

 

But it's still not echoing "Done." when it updates the db.

I may need this function to work, so all help is appreciated greatly.

 

The db connection script is at the server root. It works. What if I changed that link to an include instead of a require? What's the difference?

Link to comment
Share on other sites

you have a field in your database that is equal to $mon? or do you mean SET mon=mon+1? i do not see any error checking in your code: no die statements, no mysql_error statements, and no echos...

303143[/snapback]

 

I have added the error checking statements and no errors are reported because the queries go through just fine. It's the mysql_affected_rows function that isn't working, and how can I throw a die statement in an if statement?

 

Also, the $mon is a variable that holds the current month in mmm for (ex: oct). So the query takes oct and increments it (oct=oct+1) -> ($mon=$mon+1)

 

Thanks :)

Link to comment
Share on other sites

[!--PHP-Head--][div class=\'phptop\']PHP[/div][div class=\'phpmain\'][!--PHP-EHead--][span style=\"color:#0000BB\"]<?php

    [/span][span style=\"color:#007700\"]require_once([/span][span style=\"color:#DD0000\"]\'/home/novav2/mysql_connect.php\'[/span][span style=\"color:#007700\"]);

    [/span][span style=\"color:#0000BB\"]$mon [/span][span style=\"color:#007700\"]= [/span][span style=\"color:#0000BB\"]date[/span][span style=\"color:#007700\"]([/span][span style=\"color:#DD0000\"]\'M\'[/span][span style=\"color:#007700\"]);

    [/span][span style=\"color:#0000BB\"]$ref [/span][span style=\"color:#007700\"]= [/span][span style=\"color:#DD0000\"]\'google\'[/span][span style=\"color:#007700\"];

    [/span][span style=\"color:#0000BB\"]$query [/span][span style=\"color:#007700\"]= [/span][span style=\"color:#DD0000\"]\"UPDATE conversion_tracking SET $mon=$mon+1 WHERE referrer=\'google\' LIMIT 1\"[/span][span style=\"color:#007700\"];

    [/span][span style=\"color:#0000BB\"]$result [/span][span style=\"color:#007700\"]= [/span][span style=\"color:#0000BB\"]mysql_query[/span][span style=\"color:#007700\"]([/span][span style=\"color:#0000BB\"]$query[/span][span style=\"color:#007700\"]) or die([/span][span style=\"color:#0000BB\"]mysql_error[/span][span style=\"color:#007700\"]());

    if ([/span][span style=\"color:#0000BB\"]$result[/span][span style=\"color:#007700\"]) { [/span][span style=\"color:#FF8000\"]# the or die should stop before this

        [/span][span style=\"color:#007700\"]if ([/span][span style=\"color:#0000BB\"]mysql_affected_rows[/span][span style=\"color:#007700\"]([/span][span style=\"color:#0000BB\"]$result[/span][span style=\"color:#007700\"]) == [/span][span style=\"color:#0000BB\"]1[/span][span style=\"color:#007700\"]) {

            echo [/span][span style=\"color:#DD0000\"]\'Done.\'[/span][span style=\"color:#007700\"];

        }

    }

    else {

        echo [/span][span style=\"color:#DD0000\"]\'Incomplete.\'[/span][span style=\"color:#007700\"];

    }

 

[/span][span style=\"color:#0000BB\"]?>[/span]

[/span][!--PHP-Foot--][/div][!--PHP-EFoot--]

 

make sure you have or dies in the mysql_connect file as well.

Link to comment
Share on other sites

Well, I've managed to get it to work. I restructured the query to use the numbers in the primary key, rather than the referrer column. Here's the new posted code:

 

[!--PHP-Head--][div class=\'phptop\']PHP[/div][div class=\'phpmain\'][!--PHP-EHead--]

[span style=\"color:#0000BB\"]<?

 

[/span][span style=\"color:#007700\"]require_once([/span][span style=\"color:#DD0000\"]\"/home/novav2/mysql_connect.php\"[/span][span style=\"color:#007700\"]);

[/span][span style=\"color:#0000BB\"]$mon [/span][span style=\"color:#007700\"]= [/span][span style=\"color:#0000BB\"]date[/span][span style=\"color:#007700\"]([/span][span style=\"color:#DD0000\"]\'M\'[/span][span style=\"color:#007700\"]);

[/span][span style=\"color:#0000BB\"]$ref [/span][span style=\"color:#007700\"]= [/span][span style=\"color:#0000BB\"]1[/span][span style=\"color:#007700\"];

[/span][span style=\"color:#0000BB\"]$query [/span][span style=\"color:#007700\"]= [/span][span style=\"color:#DD0000\"]\"UPDATE conversion_tracking SET $mon=$mon+1 WHERE cpc_id=\'$ref\' LIMIT 1\"[/span][span style=\"color:#007700\"];

[/span][span style=\"color:#0000BB\"]$result [/span][span style=\"color:#007700\"]= @[/span][span style=\"color:#0000BB\"]mysql_query[/span][span style=\"color:#007700\"]([/span][span style=\"color:#0000BB\"]$query[/span][span style=\"color:#007700\"]) or die ([/span][span style=\"color:#0000BB\"]mysql_error[/span][span style=\"color:#007700\"]());

if (@[/span][span style=\"color:#0000BB\"]mysql_affected_rows[/span][span style=\"color:#007700\"]() == [/span][span style=\"color:#0000BB\"]1[/span][span style=\"color:#007700\"]) {

    echo [/span][span style=\"color:#DD0000\"]\" Done.\"[/span][span style=\"color:#007700\"];

} else {

echo [/span][span style=\"color:#DD0000\"]\"Go!\"[/span][span style=\"color:#007700\"];

}

 

[/span][span style=\"color:#0000BB\"]?>

[/span]

[/span][!--PHP-Foot--][/div][!--PHP-EFoot--]

 

So I guess MySQL is really picky when you're using $variables and stuff like that.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.