PHP - Syntaxerror oder doch falscher Inhalt? Oder bin ich einfach nur doof

Megamorph

Mitglied
Hallo Leuts,
ich habe hier ein (hoffentlich) kleines Problem, ich konnte es allerdings mit Hilfe von selfphp nicht rausfinden. Die Suche nach so einem ähnlichen Problem war auch vergeblich...

PHP:
srand(microtime()*1000000);
$zu_plani = rand(1,3);
$zu_kontinent = rand(1,5);
$zu_kuppel = rand(1,50);
        

$link = mysql_connect("localhost","xxx","xxx")                       
        or die('<p>Verbindungsaufbau mit Datenbankserver schlug fehl!</p>');        
    mysql_select_db('xxx', $link)                                             
        or die('<p>Auswahl der Datenbank schlug fehl!</p>');           

 $select = mysql_query("SELECT user FROM '$zu_plani' WHERE kontinent = '$zu_kontinent' and kuppel = '$zu_kuppel' "); 
if(mysql_num_rows($select) > 0) {                 // Zeile 87
.................
} else {...............}

Da wird mir diese Fehlermeldung ausgegeben:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in xxxxxxxxxxxxpfadxxxxxxxxxxxx on line 87

Der Script an sich ist noch etwas größer...
Etwas früher benutze ich die selbe Zeile
if(mysql_num_rows($select) > 0) {
auch schon einmal, mit dem Unterschied, dass kein Fehler auftritt. Also habe ich eine falsche Anwendung oder Syntax im Verdacht. Findet ihr was?
Thx for helping.
 
Hi,

bei PHP werden Variablen in Strings nur mit doppelten Anführungszeichen aufgelöst. Zum füllen eines Querys benutzt du am besten den PHP-Befehl sprintf

zb. in dieser Art:
$query = sprintf ("SELECT user FROM '%s' WHERE kontinent = '%s' and kuppel = '%s' ", $zu_plani, $zu_kontinent, $zu_kuppel);

$select = mysql_query($query, $verbindung);

Ich hab jetzt keine Zeit das zu testen, müsste aber mit dieser Methode funktionieren.

Gruß
Wolfgang
 
Hallo, Danke für eure Antworten!!

Ich habe es jetzt mit deiner Version probiert, Wolfgang.

Es kam leider GENAU derselbe Fehler (nur 2 Zeilen weiter hinten, weil ich es eingerückt hatte).

Kann das sich bitte nochmal jemand anschauen?
 
Probier mal Folgendes:
PHP:
<?php

	srand(microtime()*1000000);
	$zu_plani = rand(1, 3);
	$zu_kontinent = rand(1, 5);
	$zu_kuppel = rand(1, 50);

	$link = mysql_connect('localhost', 'xxx', 'xxx')
		or die('<p><strong>Verbindungsaufbau mit Datenbankserver schlug fehl!</strong> '.htmlspecialchars(mysql_error()).'</p>');
	mysql_select_db('xxx', $link)
		or die('<p><strong>Auswahl der Datenbank schlug fehl!</strong> '.htmlspecialchars(mysql_error()).'</p>');
	$query = '
		SELECT
		        `user`
		  FROM
		        `'.$zu_plani.'`
		  WHERE
		        `kontingent` = "'.$zu_kontingent.'"
		    AND `kuppel`     = "'.$zu_kuppel.'"
		';
	$result = mysql_query($query, $link)
		or die('<p><strong>Datenbankabfrage schlug fehl!</strong> '.htmlspecialchars(mysql_error())-'</p><pre>'.htmlspecialchars($query).'</pre>');
	if( mysql_num_rows($result) > 0 ) {
		…
	} else {
		…
	}

?>
Übrigens dürfen MySQL-Datenbank-, -Tabellen-, -Index-, -Spalten- und -Alias-Namen nicht nur aus einer Zahl bestehen, woher möglicherweise der Fehler rührt.
 
Kann dir jetzt mal nur den Tipp geben in der Abfrage zu suchen. Also am besten den SELECT-String ausgeben lassen und mit PHPmyAdmin oder einem anderen Tool diese Abfrage ausführen.
Problem liegt sicher nicht in Zeile 87 (oder jetzt eben 89) sondern bereits darüber bei mysql_query.

Kann das ganze leider jetzt nicht selber aufbereiten oder testen.

mfg. Wolfgang
 
Hi!

Ich bin der Meinung das die Anführungszeichen bei $zu_plani in der Abfrage falsch sind, das müssten diese `` statt diese '' sein!
Gruß BSA
 
Zurück