Warning: mysql_num_rows(): supplied argum....

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
mixos
Δημοσιεύσεις: 76
Εγγραφή: 07 Ιουν 2003 19:14
Επικοινωνία:

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από mixos » 04 Φεβ 2004 22:52

Γεια σας

Ένα script το οποίο δούλευε κανονικά σε έναν σέρβερ όταν το βάζω σε έναν άλλον μου βγάζει το παρακάτω μήνυμα:


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/electronics-lab.com/www/advertising/phpadmentor_config.php on line 209


Οι ρυθμίσεις είναι ελεγμένες.. και η database μετακινήθηκε και αυτή σε άλλον server.

Η συνάρτηση που φαίνεται να έχει πρόβλημα είναι η παρακάτω(αν το πρόβλημα είναι στην συνάρτηση και όχι στην DB):

Κώδικας: Επιλογή όλων

function PhpAdMentor_GetAd( $sZones, $nAdPos, $nBannerId = 0, $conn=0 )
{

    global $sPhpAdMentor_DBHost;
    global $sPhpAdMentor_DBUser;
    global $sPhpAdMentor_DBPassword;
    global $sPhpAdMentor_DBDatabase;
    global $sPhpAdMentor_DefaultBanner;
    global $sPhpAdMentor_InstallPath;

    $sSQL = "";
    $sWhere = "";

    if ( $conn== 0)

        $connadmentor = mysql_pconnect($sPhpAdMentor_DBHost, $sPhpAdMentor_DBUser, $sPhpAdMentor_DBPassword);
    else
        $connadmentor = $conn;


    $sSQL =     "select distinct banner.bannerid as bannerid, gifurl, ishtml, htmlcode ";
    $sSQL = $sSQL . " from $sPhpAdMentor_DBDatabase.banner ";

    if (  $nBannerId != 0 )
        $sWhere = AdSQL_AddAndWhere( $sWhere, "banner.bannerid=" . $nBannerId );
    else
        {
        if( $sZones != "" )
            {
            $sSQL = $sSQL . ",$sPhpAdMentor_DBDatabase.banzone ";
            $sWhere = AdSQL_AddAndWhere( $sWhere, "banner.bannerid=banzone.bannerid" );
            $sWhere = AdSQL_AddAndWhere( $sWhere, "banzone.zoneid in ( " . $sZones . ")" );
            }
        if ( $nAdPos != 0 )
            {
            $sWhere = AdSQL_AddAndWhere( $sWhere, "banner.farmid=" . $nAdPos );
            }

        $sWhere = AdSQL_AddAndWhere&#40; $sWhere, "weight > 0 and showcount < maximpressions AND validtodate >= now&#40;&#41; AND validfromdate <= now&#40;&#41;" &#41;;
        $sWhere = AdSQL_AddAndWhere&#40; $sWhere, " &#40;&#40; ishtml=1 &#41; OR &#40; clickcount < maxclicks &#41; &#41;"  &#41;;
        &#125;

    $sSQL = $sSQL . $sWhere;
    $sSQL = $sSQL . " ORDER BY weight * RAND&#40;&#41; DESC limit 0,1";

    $oRS = mysql_query&#40; $sSQL, $connadmentor &#41;;
&#91;b&#93;
    if &#40; mysql_num_rows&#40;$oRS&#41; == 0 &#41;
        &#123;
        //default
      $sClickUrl = $sPhpAdMentor_InstallPath . "click.php?mgr=aspcode.net&id=-1";
      return "<a href='$sClickUrl'><img border='0' src='$sPhpAdMentor_DefaultBanner'></a>";
      &#125; &#91;/b&#93;
  else
       &#123;
        $row = mysql_fetch_array&#40;$oRS&#41;;
        //Simply generate the banner html
        if &#40;$row&#91;"ishtml"&#93; == 1 &#41;
            &#123;
            $htmlcode = PhpAdMentor_GetHTMLBanner&#40;$row&#91;"htmlcode"&#93;&#41;;
            PhpAdMentor_UpdateStats&#40; $connadmentor, $row&#91;"bannerid"&#93;, false,true &#41;;
            return $htmlcode;
            &#125;

        $htmlcode = PhpAdMentor_GetBanner&#40; $row&#91;"bannerid"&#93;, $row&#91;"gifurl"&#93;, $row&#91;"xsize"&#93;, $row&#91;"ysize"&#93;  &#41;;
        PhpAdMentor_UpdateStats&#40; $connadmentor, $row&#91;"bannerid"&#93;, false,true &#41;;
        return $htmlcode;
        &#125;
&#125;
Καμιά ιδέα.. γιατί κοντεύω να τρελαθώ.. !!
Τελευταία επεξεργασία από το μέλος mixos την 06 Φεβ 2004 00:36, έχει επεξεργασθεί 2 φορές συνολικά.

Άβαταρ μέλους
Cha0s
SysAdmin
Δημοσιεύσεις: 10242
Εγγραφή: 28 Ιούλ 2001 03:00

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από Cha0s » 04 Φεβ 2004 22:59

sto telos tou kodika pou ekanes paste bale tin eksis grammi>

echo mysql_error(); kai trekse ksana to script kai kane copy paste oti sou tiposei gia na se boithiso...

Άβαταρ μέλους
mixos
Δημοσιεύσεις: 76
Εγγραφή: 07 Ιουν 2003 19:14
Επικοινωνία:

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από mixos » 04 Φεβ 2004 23:20

Δεν βγάζει κάτι παραπάνω!!

Άβαταρ μέλους
mixos
Δημοσιεύσεις: 76
Εγγραφή: 07 Ιουν 2003 19:14
Επικοινωνία:

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από mixos » 04 Φεβ 2004 23:23

Το έβαλα κάτω από το:

if ( mysql_num_rows($oRS) == 0 )
{

και βγάζει αυτό:

You have an error in your SQL syntax near '-lab_db.banner ,electronics-lab_db.banzone WHERE banner.bannerid=banzone.banne' at line 1

Άβαταρ μέλους
Cha0s
SysAdmin
Δημοσιεύσεις: 10242
Εγγραφή: 28 Ιούλ 2001 03:00

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από Cha0s » 05 Φεβ 2004 21:38

Basika apo to error den mporo na katalavo ti pezei...

Mipos i PHP tou neou server exei register globals off kai den pernei kapia metabliti to script ? (den mou paei kati allo sto mialo tora...).

Prepei na do kai to ipoloipo script na do apou pou erxetai ti + to Schema tis basis...

Άβαταρ μέλους
mixos
Δημοσιεύσεις: 76
Εγγραφή: 07 Ιουν 2003 19:14
Επικοινωνία:

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από mixos » 05 Φεβ 2004 21:51

Όλον τον κώδικα του "phpadmentor_config.php" μπορείς να το δεις εδώ:

http://users.auth.gr/~mixos/forum/phpad ... config.php


και όλο το script μπορείς να το κατεβάσεις από εδώ:

http://users.auth.gr/~mixos/forum/phpadmentor.zip

Ξανατονίζω ότι δούλευε κανονικά στον έναν server, οπότε το λάθος πρέπει να βρίσκεται κάπου αλλού, π.χ σε κάποια ρύθμιση του server ή στην php ή στην mySQL και όχι στον κώδικα του script.

Αντιδράει σαν να μην υπάρχουν οι πίνακες στην βάση ... ενώ υπάρχουν στην πραγματικότητα. Αν τους σβήσω από την βάση πάλι βγάζει το ίδιο λάθος.

Άβαταρ μέλους
Cha0s
SysAdmin
Δημοσιεύσεις: 10242
Εγγραφή: 28 Ιούλ 2001 03:00

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από Cha0s » 05 Φεβ 2004 21:53

To katebasa na to tsekaro local.

Molis exo nea tha sou po.

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27617
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από cordis » 05 Φεβ 2004 21:55

electronics-lab_db

στην προηγούμενη έκδοση είχες - στο όνομα της βάσης;
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
mixos
Δημοσιεύσεις: 76
Εγγραφή: 07 Ιουν 2003 19:14
Επικοινωνία:

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από mixos » 06 Φεβ 2004 00:30

όχι το παλιό όνομα της βάσης ήταν "electronics" σκέτο και τώρα είναι

electronics-lab_db

Λες η πάυλα να δημιουργεί το πρόβλημα??

Άβαταρ μέλους
softius
Script Master
Δημοσιεύσεις: 241
Εγγραφή: 11 Ιαν 2004 19:07
Επικοινωνία:

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από softius » 06 Φεβ 2004 01:14

Το πρόβλημα είναι η παύλα. Το συγκεκριμένο πρόβλημα δημιουργείται μόνο όταν το όνομα του πίνακα δεν είναι μέσα σε quote.

Δηλαδη το SELECT * FROM 'electronics-lab_db';
είναι απόλυτα ορθό.
Αντιθέτως το SELECT * FROM electronics-lab_db;
είναι λανθασμένο

:arrow: Καλό θα ήταν να αποφεύγεις να χρησιμοποιείς σύμβολα πράξεων στην ονομασία τόσο των tables, όσο και των attributes.

Γιατί συμβαίνει αυτό;
Το - ερμηνεύεται ως σύμβολο της αφαίρεσης...

Άβαταρ μέλους
iNDEFiX
Honorary Member
Δημοσιεύσεις: 2569
Εγγραφή: 20 Δεκ 2002 00:48
Τοποθεσία: κλειστή λόγω έργων
Επικοινωνία:

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από iNDEFiX » 06 Φεβ 2004 09:32

Cha0s έγραψε:Basika apo to error den mporo na katalavo ti pezei...

Mipos i PHP tou neou server exei register globals off kai den pernei kapia metabliti to script ? (den mou paei kati allo sto mialo tora...).

Prepei na do kai to ipoloipo script na do apou pou erxetai ti + to Schema tis basis...
Sigoura den einai OFF. Ton exo valei ston kedriko server. Koitaksa mhpos eixa ksexasei tpt sta magic_quote alla oute afto einai to provlima. Kati pezei me to scriptaki re vag alla den exo katalavei ti :(
Το πρόβλημα είναι η παύλα. Το συγκεκριμένο πρόβλημα δημιουργείται μόνο όταν το όνομα του πίνακα δεν είναι μέσα σε quote.

Δηλαδη το SELECT * FROM 'electronics-lab_db';
είναι απόλυτα ορθό.
Αντιθέτως το SELECT * FROM electronics-lab_db;
είναι λανθασμένο

Καλό θα ήταν να αποφεύγεις να χρησιμοποιείς σύμβολα πράξεων στην ονομασία τόσο των tables, όσο και των attributes.

Γιατί συμβαίνει αυτό;
Το - ερμηνεύεται ως σύμβολο της αφαίρεσης...
Den mporeis na kaneis select mia vash (electronics-lab_db) alla apo ena TABLE pou einai mesa se afthn. To provlima 100% den einai apo thn "-" giati oi 40 apo tis 200 vaseis pou exo ston server einai me pavlitsa. Episis den ginonte prakseis mesa sta queries alla mono posotikes sigriseis (me > kai <) kai me ekseresh to update+1. (apo oso thimamai diladi)

Άβαταρ μέλους
softius
Script Master
Δημοσιεύσεις: 241
Εγγραφή: 11 Ιαν 2004 19:07
Επικοινωνία:

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από softius » 06 Φεβ 2004 09:53

Απλά ένα παράδειγμα έκανα :lol:
Γενικά... είτε όνομα βάσης, είτε όνομα πίνακα, είτε όνομα χαρακτηριστικού δεν δουλεύει σωστά - αν δεν είναι κλεισμένο σε quotes.

Οσο για πράξεις μέσα στα queries δεν γίνονται μεν πράξεις που να τροποποιούν τις τιμές των πινάκων, αλλά έχεις την δυνατότητα να χρησιμοποιήσεις τελεστές. Για παράδειγμα SELECT * FROM table WHERE (a-b) > c;

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27617
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από cordis » 06 Φεβ 2004 17:54

το

Κώδικας: Επιλογή όλων

update table1
set table1.timi1 = &#40;table1.timi1-table1.timi2+10&#41;/2
where table1.timi1 = table1.timi2-100
είναι απόλυτα ορθό! όπως και το

Κώδικας: Επιλογή όλων

select table1.timi1 = &#40;table1.timi1-table1.timi2+10&#41;/2 as timi
from table1
where table1.timi1 = table1.timi2-100
όπου ο κώδικας έχει

Κώδικας: Επιλογή όλων

    $sSQL = $sSQL . " from $sPhpAdMentor_DBDatabase.banner "; 
βάλε το

Κώδικας: Επιλογή όλων

    $sSQL = $sSQL . " from banner "; 
και το...

Κώδικας: Επιλογή όλων

$sSQL = $sSQL . ",$sPhpAdMentor_DBDatabase.banzone "; 
σε..

Κώδικας: Επιλογή όλων

$sSQL = $sSQL . ",banzone "; 
και δοκίμασε να το τρέξεις...
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
mixos
Δημοσιεύσεις: 76
Εγγραφή: 07 Ιουν 2003 19:14
Επικοινωνία:

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από mixos » 06 Φεβ 2004 18:25

Ευχαριστώ πολύ για όλες σας τις απαντήσεις.. το πρόβλημα λύθηκε.. και ήταν στην παύλα σε συνδιασμό με το συγκεκριμένο script.

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27617
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Warning: mysql_num_rows(): supplied argum....

Δημοσίευση από cordis » 07 Φεβ 2004 21:45

δεν ήταν η παύλα σε συνδυασμό με το script, ήταν η παύλα μόνη της...
η MySQL για κάποιον λόγο, λάθος της, σε αφήνει να βάλεις μη επιτρεπτούς χαρακτήρες σε ονόματα βάσεων, πινάκων και πεδίων... με αποτέλεσμα μετά να μη μπορείς μετά να τα προσπελάσεις και να ψάχνεσαι....

μια φορά είχα κάνει ένα όνομα πεδίου από το notepad και το έβαλα σε έναν πίνακα στην MySQL χωρίς να δω ότι είχα πάρει με το copy και το κενό που υπήρχε μετά το πεδίο... όποτε όταν έκανα select pedio from table1 η MySQL με έγραφε κανονικά... έπρεπε να γράψω select 'pedio ' from table1 ...
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες