2010-11-30 11 views
0

Hallo, ich erhalte den Fehler unten, ich habe alles doppelt überprüft und weiß nicht, warum es angezeigt wird. Warning: mysql_num_rows(): geliefertes Argument ist keine gültige MySQL Ergebnis Ressource in /home/namebob/public_html/site_reg/statlookup.php auf Linie 6Warnung: mysql_num_rows(): geliefertes Argument ist nicht gültig

<?php 
    include_once('common.php'); 
    $cid  = $_REQUEST['cid']; 
    $_elmID  = $_REQUEST['elmID']; 
    $scan = mysql_query("SELECT `id`, `state` FROM `mast_state` WHERE `countryid` = $cid"); 
    if(mysql_num_rows($scan)>0) 
    { 
... 
+1

'$ cid = $ _REQUEST [ 'cid'];' sollte '$ cid = (int) $ _REQUEST [ 'cid'];', um SQL-Injection-Angriffe zu vermeiden. – tamasd

+0

@Yorirou, das ist nur, wenn CID eine Nummer ist. Er sollte es zitieren oder die Autoquoting-Fähigkeiten von PDO verwenden. – Rahly

+0

In der Tat haben Sie nichts "doppelt überprüft". Nur weil Sie keine Fehler behandeln. Fehlerbehandlung (und Debugging) sind die wichtigsten Teile der Programmierung, aber kein einziger Neuling hat jemals davon gehört. Eigentlich müssen Sie nichts überprüfen. Lassen Sie Ihr Programm Ihnen sagen, was falsch läuft - es wäre viel zuverlässiger. Siehe meine andere Antwort, wie man mysql-Abfragen korrekt ausführt: http://stackoverflow.com/questions/2666104/how-to-reslove-mysql-fetch-assoc-problems/2666119#2666119 –

Antwort

1
$scan = mysql_query("SELECT `id`, `state` FROM `mast_state` WHERE `countryid` = $cid"); 
    $stock_num = ''; 
    if($scan) 
    { 
     while($row=mysql_fetch_object($scan)) 
     { 
      if($row->state) 
      $state = $row->state; 
     } 
    }  
1

Es ist ein Versuch wert, var_dump($scan), wenn Sie so etwas wie null erhalten/false, dh die Abfrage schlägt fehl. Wenn das der Fall ist, versuchen Sie echo mysql_error() auf SQL-Fehler zu überprüfen (fehlende Tabelle usw.)

+0

Ich bekomme eine falsche Wende für den Dump, und für die letzten e rror ich bekomme diesen fatalen Fehler: Aufruf zu undefinierter Funktion mysql_last_error() in – acctman

+0

aw, mein Schlechter, sollte es mysql_error() statt –

+0

meine Antwort bearbeitet. –

1

Wahrscheinlich ist Ihre Abfrage fehlgeschlagen. Versuchen:

if($scan) { 
    if(mysql_num_rows($scan) > 0) { 
    //... 
    } 
} else { 
    trigger_error(mysql_error()); 
}; 
+0

Dies ist der Fehler, den ich erhalte Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das zu Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von '' bei Zeile 1 – acctman

+0

dann die SQL-Anweisung, die Sie ausführen, ist ungültig und hat auch SQL-Injection-Fähigkeit. Verwenden Sie PDO ;-) – Rahly

+0

@ Jeremy wahrscheinlich, weil Sie nicht ElmID in der Anfrage haben. Fügen Sie 'error_reporting (E_ALL);' oben in diesem Code hinzu, um über solche dummen Fehler informiert zu werden. –

1
 
$scan = mysql_query("SELECT `id`, `state` FROM `mast_state` WHERE `countryid` = '".mysql_real_escape_string($cid)."'"); 

Aber wirklich, verwenden PDO.

 
$stm = $db->prepare("SELECT `id`, `state` FROM `mast_state` WHERE `countryid` = ?"); 
if($stm && $stm->execute(array($cid))) { 
    while($data = $stm->fetch(PDO::FETCH_ASSOC)) { 

    } 
} 
+0

er wollte die Anzahl der gefundenen Zeilen wissen, oder? –

+0

Es sieht nicht so aus, als ob er überprüft, ob die Zeilenanzahl größer als 0 ist. Das ist ein allgemeiner Hinweis, dass er nur darauf achtet, ob die Abfrage irgendetwas zurück zu ihm zurückgibt. Er konnte nur $ stm-> rowCount, um die Zeilenanzahl zu erhalten. – Rahly

Verwandte Themen