You have an error in your SQL syntax; ...

Digger-Deluxe

Lt. Junior Grade
Registriert
Juli 2006
Beiträge
283
Guten Tag erstmal,


ich habe das Problem, dass bei mir folgender PHP / SQL Fehler auftritt.


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\admin\functions.php on line 101
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1



vllt kann mir ja jemand weiterhelfen.

MfG
Digger
 
if($_REQUEST[content]==houses){
$qu=mysql_query('SELECT * FROM houses WHERE ID_house LIKE '.$_REQUEST[id]);
$id=mysql_fetch_array($qu);
echo $id[house_name_de];



und

phpMyAdmin 2.11.7
 
eventuell, ja auch nur vielleicht mal mit Zeilenangaben oder so das man helfen kann...

Ansonsten kommt mit das houses, was anscheinend eine Tabelle in der Datenbank ist komisch vor... ist das ein String? Wenn ja, dann evtl

Code:
$_REQUEST[content]==[COLOR="Red"]'[/COLOR]houses[COLOR="Red"]'[/COLOR]

Vielleicht würde mehr Quelltext helfen...
 
Das Statement hinter LIKE gehört immer in Hochkommas, daher ist das SQL-Statement falsch.
Richtig: "SELECT * FROM houses WHERE ID_house LIKE '" . $_REQUEST[id] . "';"

Den String habe ich mit doppeltem Hochkomma eingeschlossen, damit das einfache für MySQL bleibt.


Wenn es sich bei ID_house um einen Integer handelt, dann wäre folgendes besser:
"SELECT * FROM houses WHERE ID_house = " . $_REQUEST[id] . ";"
 
Zeile 101 ist nur der mysql_fetch_array Aufruf

Der Fehler liegt in der Query an sich, damit ist Zeile 101 aus functions.php aus dem Schneider.


Ich würd ja mal spontan sagen, dass $_REQUEST[id] leer ist.

Damit ergibt sich die Query zu

Code:
SELECT * FROM houses WHERE ID_house LIKE
Und nach dem LIKE wird ein Ausdruck erwartet. Dieser ist hier nicht vorhanden, die Zeichenkette ist leer (das SQL-Statement ist hier zu Ende).

Deshalb das '' (leere Zeichenkette) in der Fehlermeldung.
 
Code:
<?
function removeRekursiv($dir)
{
	$dp = opendir($dir);									#Verzeichnis öffnen
	while($file = readdir($dp))						#solang "$file" der Ordner ist, passiert:
	{
		$name = $dir . "/" . $file;					#Name der einzelnen Dateien: Verzeichnis/$file
		if ($file != "." && $file != "..")	#Falls "." nicht im $file vorkommt:
		{
			if (is_dir($name))								#Falls der Name der Datei ein Ordner ist:
				removeRekursiv ($name);					#Funktion bei diesem Ordner wiederholen
			else
				unlink($name);									#Ansonsten Löschung der Datei
		}
	}
	closedir($dp);												#Schließen des Verzeichnisses
	rmdir($dir);													#Löschen des Verzeichnisses
}
function showimages($ordner){
	$dir= '../images/schloesser/'.$ordner.'/';
	echo '<table cellspacing="0" cellpadding="8" width="100%">';
	echo '<tr>';
	$p==0;
	for($k=1;$k<=12;$k++){
		if(file_exists($dir.'/gal_'.$ordner.'_0'.$k.'.jpg')){
			echo '<td><img src="'.$dir.'/gal_'.$ordner.'_0'.$k.'.jpg" alt="'.$ordner.'"><br><input name="file_'.$k.'" type="file"></td>';
			$p++;
		}
		if($k==2||$k==4||$k==6||$k==8||$k==10){
			echo '</tr><tr>';
		}
	}
	echo '</tr>';
	echo '</table>';
}
function checkfile($file) {
	if(file_exists('source/'.$file.'.php')) return TRUE;
}
function getcontent($content) {
	include('source/'.$content.'.php');
}
function geterror() {
	include('source/error.php');
}
function getmenu($content) {
	include('source/menu_'.$content.'.php');
}
function options() {
	echo 'Anzeigen: <a href="index.php?content=houses&show=overview&display=all">alle</a> - ';
	echo '<a href="index.php?content=houses&show=overview&display=1">aktivierte</a> - ';
	echo '<a href="index.php?content=houses&show=overview&display=0">deaktivierte</a>';
}
function getlanguage(){
	if($_REQUEST[content]==houses || $_REQUEST[content]==houses_project || $_REQUEST[content]==estate){
	?>
		<table cellpadding="0" cellspacing="0" width="100%">
			<tr>
				<td class="sprachauswahl" width="80"><b><a onFocus="this.style.color='#FF6603';" onBlur="this.style.color='#6B696B';" href="javascript:void(0);" onClick="textshow('eins');texthide('zwei','drei','vier');">Deutsch</a></b></td>
				<td class="sprachauswahl" width="80"><b><a onFocus="this.style.color='#FF6603';" onBlur="this.style.color='#6B696B';" href="javascript:void(0);" onClick="textshow('zwei');texthide('eins','drei','vier');">Englisch</a></b></td>
				<td class="sprachauswahl"><b><a onFocus="this.style.color='#FF6603';" onBlur="this.style.color='#6B696B';" href="javascript:void(0);" onClick="textshow('drei');texthide('eins','zwei','vier');">Niederländisch</a></b></td>
				<td class="sprachauswahl"><b><a onFocus="this.style.color='#FF6603';" onBlur="this.style.color='#6B696B';" href="javascript:void(0);" onClick="textshow('vier');texthide('eins','zwei','drei');">Bilder</a></b></td>
			</tr>
		</table>
		<?
	}
	else{
	?>
	<table cellpadding="0" cellspacing="0" width="100%">
		<tr>
			<td class="sprachauswahl" width="80"><b><a onFocus="this.style.color='#FF6603';" onBlur="this.style.color='#6B696B';" href="javascript:void(0);" onClick="textshow('eins');texthide('zwei','drei','');">Deutsch</a></b></td>
			<td class="sprachauswahl" width="80"><b><a onFocus="this.style.color='#FF6603';" onBlur="this.style.color='#6B696B';" href="javascript:void(0);" onClick="textshow('zwei');texthide('eins','drei','');">Englisch</a></b></td>
			<td class="sprachauswahl"><b><a onFocus="this.style.color='#FF6603';" onBlur="this.style.color='#6B696B';" href="javascript:void(0);" onClick="textshow('drei');texthide('eins','zwei','');">Niederländisch</a></b></td>
		</tr>
	</table>
	<?
	}
}

function clickingpath() {
	echo '<a href="index.php">Start</a> > ';
	if($_REQUEST[content]==main) echo 'Menuauswahl > ';
	if($_REQUEST[content]==houses) echo '<a href="index.php?content=houses&show=overview">Häuser</a> > ';
	if($_REQUEST[content]==regions) echo '<a href="index.php?content=regions&show=overview">Regionen</a> > ';
	if($_REQUEST[content]==counties) echo '<a href="index.php?content=counties&show=overview">Bundesländer</a> > ';
	if($_REQUEST[content]==countries) echo '<a href="index.php?content=countries&show=overview">Länder</a> > ';
	if($_REQUEST[content]==events) echo '<a href="index.php?content=events&show=overview">Events</a> > ';
	if($_REQUEST[content]==pressreview) echo '<a href="index.php?content=pressreview&show=overview">Pressespiegel</a> > ';
	if($_REQUEST[content]==links) echo '<a href="index.php?content=links&show=overview">Links</a> > ';
		if($_REQUEST[show]==overview) echo 'Übersicht';
		if($_REQUEST[show]==insert) echo 'Hinzufügen';
		if($_REQUEST[show]==images) echo 'Bilder';
		if($_REQUEST[show]==edit) {
			echo 'Bearbeiten > ';
			if($_REQUEST[content]==pressreview){
				$qu=mysql_query('SELECT * FROM pressespiegel WHERE id LIKE '.$_REQUEST[id]);
				$id=mysql_fetch_array($qu);
				echo $id[headline_de];
			}
			if($_REQUEST[content]==houses){
				$qu=mysql_query('SELECT * FROM houses WHERE ID_house LIKE '.$_REQUEST[id]);
				$id=mysql_fetch_array($qu);
				echo $id[house_name_de];
			}
			echo mysql_error();
			if($_REQUEST[content]==regions){
				$qu2=mysql_query('SELECT * FROM regions WHERE id LIKE '.$_REQUEST[id]);
				$id2=mysql_fetch_array($qu2);
				echo $id2[name_de];
			}
			elseif($_REQUEST[content]==counties){
				$qu2=mysql_query('SELECT * FROM counties WHERE id LIKE '.$_REQUEST[id]);
				$id2=mysql_fetch_array($qu2);
				echo $id2[name_de];
			}
			elseif($_REQUEST[content]==countries){
				$qu2=mysql_query('SELECT * FROM countries WHERE id LIKE '.$_REQUEST[id]);
				$id2=mysql_fetch_array($qu2);
				echo $id2[name_de];
			}
			elseif($_REQUEST[content]==events){
				$qu2=mysql_query('SELECT * FROM dates WHERE id LIKE '.$_REQUEST[id]);
				$id2=mysql_fetch_array($qu2);
				echo $id2[ueberschrift];
			}
		}
}
function file_size($url)
{
    $size = filesize($url);
    if($size < 1000) {
        return number_format($size, 0, ",", ".")." Bytes";
    }
    elseif($size < 1000000) {
        return number_format($size/1024, 0, ",", ".")." KB";
    }
    else {
        return number_format($size/1048576, 0, ",", ".")." MB";
    }
}

function connect()
{
		 $con=mysql_connect('localhost','CuCa','55kyLt+B2O') or die(mysql_error());
#		 $con=mysql_connect('localhost','admin','netzprofi323') or die(mysql_error());
     mysql_select_db('culture-castles',$con) or die(mysql_error());
}

function check_user($name, $pass)
{
    $sql="SELECT UserId
    FROM users
    WHERE UserName='".$name."' AND UserPass=MD5('".$pass."')
    LIMIT 1";
    $result= mysql_query($sql) or die(mysql_error());
    if ( mysql_num_rows($result)==1)
    {
        $user=mysql_fetch_assoc($result);
        return $user['UserId'];
    }
    else
        return false;
}

function get_user()
{ 
    $sql="SELECT *
        FROM users 
        WHERE UserSession='".session_id()."'";
     $user=mysql_query($sql);
    return mysql_fetch_assoc($user);
}

function login($userid)
{
    $sql="UPDATE users
    SET UserSession='".session_id()."', UserTime='".time()."'
    WHERE UserId=".$userid;
     mysql_query($sql);
}

function isadmin()
{
	$erg=mysql_query("SELECT * FROM users WHERE UserSession='".session_id()."' LIMIT 1");
	$res=mysql_fetch_array($erg);
	if($res[UserAdmin]){
		return 1;
	}
}

function logged_in()
{
    $sql="SELECT UserId
    FROM users
    WHERE UserSession='".session_id()."'
    LIMIT 1";
    $result= mysql_query($sql);
      return ( mysql_num_rows($result)==1);
}

function logout()
{
    $sql="UPDATE users
    SET UserSession=NULL
    WHERE UserSession='".session_id()."'";
     mysql_query($sql);
}

function logoutinactive(){
		$sperre=3600;
		$zeit=time()-$sperre;
		$query=mysql_query("SELECT * FROM users ORDER by UserName");
		for($i=0;$i<mysql_num_rows($query);$i++){
			$row=mysql_fetch_array($query);
			mysql_query("UPDATE users SET UserSession=NULL, UserTime=NULL WHERE UserTime<=".$zeit);
		}
}
function beactive(){
		mysql_query("UPDATE users SET UserTime='".time()."' WHERE UserSession='".session_id()."'");
}

connect();

?>
 
Zuletzt bearbeitet von einem Moderator: (code-tags hinzugefügt 0.ô)
pvc-junkie schrieb:
Das Statement hinter LIKE gehört immer in Hochkommas, daher ist das SQL-Statement falsch.
Richtig: "SELECT * FROM houses WHERE ID_house LIKE '" . $_REQUEST[id] . "';"

Den String habe ich mit doppeltem Hochkomma eingeschlossen, damit das einfache für MySQL bleibt.


Wenn es sich bei ID_house um einen Integer handelt, dann wäre folgendes besser:
"SELECT * FROM houses WHERE ID_house = " . $_REQUEST[id] . ";"

Kontrollier einfach mal deine SQL-Anweisungen und deine Zeichensetzung in der "Umgebung" des Fehlers...

Viel Spaß dabei :)
 
$qu=mysql_query('SELECT * FROM houses WHERE ID_house LIKE '.$_REQUEST[id]);


wie müsste das jetzt aussehen?
 
Ich glaube, ich habe shcon seit 2-3 Jahren kein PHP mehr selber programmiert :P aber ich glaube so:

$qu=mysql_query('SELECT * FROM houses WHERE ID_house LIKE '.'.$_REQUEST[id].');

aber verlass dich da nicht drauf :)


Moment! Antwort ist doch schon da:


"SELECT * FROM houses WHERE ID_house LIKE '" . $_REQUEST[id] . "';"
 
eine id ist normalerweise eine eindeutige zahl, welche man mit = vergleicht. like trifft nur auf strings zu und auf sonst nichts. ein paar informationen zu datentypen wären auch noch gut, denn diese werden auch nicht getrost ignoriert.
 
Digger-Deluxe schrieb:
$qu=mysql_query('SELECT * FROM houses WHERE ID_house LIKE '.$_REQUEST[id]);

da ich es wie pvc-junkie sehe:



$qu=mysql_query("SELECT * FROM houses WHERE ID_house LIKE ' ".$_REQUEST[id]." ';");

ich hab mal zwischen die einfachen und doppelten Hochkommas ein Leerzeichen gepackt. Diese solltest du wieder entfernen. Sie dienen hier nur der Übersichtlichkeit. Desweiteren würde ich vorher auch noch Prüfen ob $_REQUEST[id] leer ist oder nicht
 
claW. schrieb:
eine id ist normalerweise eine eindeutige zahl, welche man mit = vergleicht. like trifft nur auf strings zu und auf sonst nichts. ein paar informationen zu datentypen wären auch noch gut, denn diese werden auch nicht getrost ignoriert.

Guck mal einer an, da hat er recht ;)
Da könnte der Fehler drinne stecken :)
 
mysql_query('SELECT * FROM houses WHERE ID_house LIKE '.$_REQUEST[id]); <--- FALSCH

mysql_query("SELECT * FROM `houses` WHERE `ID_house` LIKE '%$_REQUEST[id]%'"); <--- RICHTIG

man beachte die " am anfang und ende, die ` um tabellennamen und spaltennamen und ' um werte.


wie claW aber bereits sagte, ist like für strings....zum beispiel für eine suche in der DB. ne id ist ne zahl. wenn du nach was like 1 suchst findest du alle ids mit ner 1 (1111, 1231, 8381 usw). macht jetzt nicht wirklich sinn ;-)
 
Zuletzt bearbeitet:
Stimmt nicht ganz. Eine Suche mit "like 1" findet auch nur die 1.
Um sowas wie 1111 zu finden, muß man noch Platzhalter verwenden, z.B. "like 1%"
 
MacFly schrieb:
Stimmt nicht ganz. Eine Suche mit "like 1" findet auch nur die 1.
Um sowas wie 1111 zu finden, muß man noch Platzhalter verwenden, z.B. "like 1%"


hättest du meinen SQL syntax gelesen wäre dir was aufgefallen was dem % entspricht ;-)
 
Tja deswegen mache ich das auch immer so:
PHP:
$db_sql='SELECT * FROM dates WHERE id = " ' .$_REQUEST['id'].' "  ';

$result=mysql_query($db_sql);
if(!result){echo mysql_error(VERBINDUNGSKENNUNG); die;}
$id2=mysql_fetch_array($result);
echo $id2[ueberschrift];


Und wenn du nun nen error hast gehste einfach hin in den code und fügst nen echo rein:

PHP:
$db_sql='SELECT * FROM dates WHERE id =" '.$_REQUEST['id'].' "  ';

echo $db_sql

$result=mysql_query($db_sql);
if(!result){echo mysql_error(VERBINDUNGSKENNUNG); die;}
$id2=mysql_fetch_array($result);
echo $id2[ueberschrift];

Dann kopierste dir einfach die SQL anweisung die du im browser siehst und versuchst die direkt im phpmyadmin auszuführen, dann gehts auf fehlersuche. Alels andere ist mutmaßung.

Achja und wenn du schon mit Requests SQL abfragen machst stell bitte sicher das sie auch das gewünsche drin ist mit zb. if(isset($_REQUEST['blabla'])) oder is_numeric usw...
 

Ähnliche Themen

Zurück
Oben