Bookmarks

Yahoo Gmail Google Facebook Delicious Twitter Reddit Stumpleupon Myspace Digg

Search queries

WwWXxX, udp high ports, d-link extract firmware dsl-2750u, wwwwxxxxx.2G, yxxxcom, WWWXXX, ftp://192.168.100.100, wwwxxx 100, www.xxxcon, wwwxxx

Links

XODOX
Impressum

#1: Abfrage ergebislos

Posted on 2008-04-23 10:56:14 by Robert Fall

Hallo

Ich habe eine DB-Abfrage (PHP/MySQL-5.0.51a) die mittels 3 Dropdown-Menüs
insgesamt 4 Tabellen abfrägt soweit hingekriegt, daß keine Fehlermeldung
mehr angezeigt wird. Weder PHP- noch SQL-Errors. Ich bekomme trotzdem keine
Ergebnisse angezeigt. Da ich in MySQL nicht ganz so firm bin, bitte ich euch
mal meine Select-Abfrage zu überprüfen. Vielleicht liegt's am SQL-Code.

SELECT *
FROM festivals as f
INNER JOIN f_categories AS c ON c.id = f.category
INNER JOIN f_countries AS o ON o.id = f.country
INNER JOIN f_months AS m ON m.id = f.month
WHERE f.title LIKE %s
AND c.category LIKE %s
AND o.country LIKE %s
AND m.month LIKE %s
ORDER BY f.title

Danke schon mal für eure Hilfe.

Gruß

Robert

Report this message

#2: Re: Abfrage ergebislos

Posted on 2008-04-23 11:01:04 by Gregor Kofler

Robert Fall meinte:
> Hallo
>
> Ich habe eine DB-Abfrage (PHP/MySQL-5.0.51a) die mittels 3 Dropdown-Menüs
> insgesamt 4 Tabellen abfrägt soweit hingekriegt, daß keine Fehlermeldung
> mehr angezeigt wird. Weder PHP- noch SQL-Errors. Ich bekomme trotzdem keine
> Ergebnisse angezeigt. Da ich in MySQL nicht ganz so firm bin, bitte ich euch
> mal meine Select-Abfrage zu überprüfen. Vielleicht liegt's am SQL-Code.

Sogar ganz sicher.

> SELECT *
> FROM festivals as f
> INNER JOIN f_categories AS c ON c.id = f.category
> INNER JOIN f_countries AS o ON o.id = f.country
> INNER JOIN f_months AS m ON m.id = f.month
> WHERE f.title LIKE %s
> AND c.category LIKE %s
> AND o.country LIKE %s
> AND m.month LIKE %s
> ORDER BY f.title

Was ist %s? Sollte ohnedies '%s' heissen. Und nachdem kein Monatsname
auf "s" endet, wird das Ergebnis immer leer sein.

Gregor


--
http://photo.gregorkofler.at ::: Landschafts- und Reisefotografie
http://web.gregorkofler.com ::: meine JS-Spielwiese
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Report this message

#3: Re: Abfrage ergebislos

Posted on 2008-04-23 11:04:56 by Christian Kirsch

Robert Fall schrieb:
> Hallo
>
> Ich habe eine DB-Abfrage (PHP/MySQL-5.0.51a) die mittels 3 Dropdown-Menüs
> insgesamt 4 Tabellen abfrägt soweit hingekriegt, daß keine Fehlermeldung
> mehr angezeigt wird. Weder PHP- noch SQL-Errors. Ich bekomme trotzdem keine
> Ergebnisse angezeigt.

Tja, dann wird wohl kein passender Datensatz vorhanden sein...

> Da ich in MySQL nicht ganz so firm bin, bitte ich euch
> mal meine Select-Abfrage zu überprüfen. Vielleicht liegt's am SQL-Code.
>
> SELECT *
> FROM festivals as f
> INNER JOIN f_categories AS c ON c.id = f.category
> INNER JOIN f_countries AS o ON o.id = f.country
> INNER JOIN f_months AS m ON m.id = f.month
> WHERE f.title LIKE %s
> AND c.category LIKE %s
> AND o.country LIKE %s
> AND m.month LIKE %s
> ORDER BY f.title
>

Ein paar Hinweise (unsortiert):

- Strings werden in SQL mit ' begrenzt. Sowas wie "LIKE %s" sollte also
einen Syntaxfehler liefern ...

mysql> select count(*) from autoren where nname like %m;
ERROR 1064 (42000): 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 '%m' at line 1


Tut es auch. Deine Behauptung, Du bekämst keine SQL-Fehler ist also
entweder eine Lüge oder Du hast nicht nachgeguckt oder Du hast hier
nicht das angegebene Statement gepostet sondern irgendwas.

- AND hat in boolscher Algebra (-> Wikipedia?) eine bestimmte Bedeutung.
Nicht notwendigerweise die, die man umgangssprachlich mit "und" verbindet.

- Warum vermutest Du, dass etwas sowohl einen Titel ('title' steht ja
wohl dafür?) als auch einen Monat bezeichnen könne? Bei mir sind Monate
üblicherweise Integer (da Du nichts über Deine Tabellenstruktur
verrätst, weiß ich nicht, wie das bei Dir aussieht) - es ergibt also
herzlich wenig Sinn, nach "Lieschen Müller" im Feld "Monat" zu suchen.

Wenn Du Datenbankprogrammierung betreiben willst, besorg Dir am besten
ein geeignetes Buch dazu. Und lies die MySQL-Dokumentation
(dev.mysql.com/doc), sie enthält auch ein Tutorial.

Report this message

#4: Re: Abfrage ergebislos

Posted on 2008-04-23 11:09:13 by Gregor Kofler

Robert Fall meinte:
> Hallo
>
> Ich habe eine DB-Abfrage (PHP/MySQL-5.0.51a) die mittels 3 Dropdown-Menüs
> insgesamt 4 Tabellen abfrägt soweit hingekriegt, daß keine Fehlermeldung
> mehr angezeigt wird. Weder PHP- noch SQL-Errors. Ich bekomme trotzdem keine
> Ergebnisse angezeigt. Da ich in MySQL nicht ganz so firm bin, bitte ich euch
> mal meine Select-Abfrage zu überprüfen. Vielleicht liegt's am SQL-Code.
>
> SELECT *
> FROM festivals as f
> INNER JOIN f_categories AS c ON c.id = f.category
> INNER JOIN f_countries AS o ON o.id = f.country
> INNER JOIN f_months AS m ON m.id = f.month
> WHERE f.title LIKE %s
> AND c.category LIKE %s
> AND o.country LIKE %s
> AND m.month LIKE %s
> ORDER BY f.title
>
> Danke schon mal für eure Hilfe.
>

Ah. PHP. sprintf(). Richtig? Dann sollte man noch wissen, was in den
restlichen Parametern steht. Poste dein Statement so, wie es an den
Server ausgeliefert wird. Soll ja kein Ratespiel sein. Oder?

Gregor



--
http://photo.gregorkofler.at ::: Landschafts- und Reisefotografie
http://web.gregorkofler.com ::: meine JS-Spielwiese
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Report this message

#5: Re: Abfrage ergebislos

Posted on 2008-04-23 12:20:14 by Robert Fall

"Gregor Kofler" replies

> Ah. PHP. sprintf(). Richtig? Dann sollte man noch wissen, was in den
> restlichen Parametern steht. Poste dein Statement so, wie es an den Server
> ausgeliefert wird. Soll ja kein Ratespiel sein. Oder?
>
> Gregor

Besten Dank für eure Antworten !

Anbei das ganze Script. Ist allerdings hauptsächlich eine
PHP-Angelegenheit.

Robert

<?php require_once(festival.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "",
$theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

$theValue = function_exists("mysql_real_escape_string") ?
mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" :
"NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue :
$theNotDefinedValue;
break;
}
return $theValue;
}
}

$colname_rs = "-1";
if (isset($_POST['title'])) {
$colname_rs = (get_magic_quotes_gpc()) ? $_POST['title'] :
addslashes($_POST['title']);
}
$colfarbe_rs = "-1";
if (isset($_POST['category'])) {
$colfarbe_rs = (get_magic_quotes_gpc()) ? $_POST['category'] :
addslashes($_POST['category']);
}
$colps_rs = "-1";
if (isset($_POST['country'])) {
$colps_rs = (get_magic_quotes_gpc()) ? $_POST['country'] :
addslashes($_POST['country']);
}
$colps_rs = "-1";
if (isset($_POST['month'])) {
$colps_rs = (get_magic_quotes_gpc()) ? $_POST['month'] :
addslashes($_POST['month']);
}
mysql_select_db($database_festival, $festival);
$query_rs = sprintf("SELECT *
FROM festivals as f
INNER JOIN f_categories AS c ON c.id = f.category
INNER JOIN f_countries AS o ON o.id = f.country
INNER JOIN f_months AS m ON m.id = f.month
WHERE f.title LIKE %s
AND c.category LIKE %s
AND o.country LIKE %s
AND m.month LIKE %s
ORDER BY f.title", GetSQLValueString($colname_rs, "text"),
GetSQLValueString($coltitle_rs, "text"), GetSQLValueString($colcategory_rs,
"text"), GetSQLValueString($colcountry_rs, "text"),
GetSQLValueString($colmonth_rs, "text"));
$rs = mysql_query($query_rs, $festival) or die(mysql_error());
$row_rs = mysql_fetch_assoc($rs);
$totalRows_rs = mysql_num_rows($rs);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Abfrage-Test</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
<select name="country" id="country">
<option value="%">- Country - </option>
<option value="Austria">Austria</option>
<option value="Italy">Italy</option>
<option value="Hungary">Hungary</option>
<option value="United Kingdom">United Kingdom</option>
</select>
<select name="category" id="category">
<option value="%"> - Category - </option>
<option value="Opera">Opera</option>
<option value="Theatre">Theatre</option>
<option value="Dance">Dance</option>
<option value="Opera">Operetta</option>
<option value="Theatre">Classic Concerts</option>
<option value="Dance">Jazz</option>
</select>
<select name="month" id="month">
<option value="%">- Month - </option>
<option value="January">January</option>
<option value="February">February</option>
<option value="March">March</option>
<option value="April">April</option>
<option value="May">May</option>
<option value="June">June</option>
<option value="July">July</option>
<option value="August">August</option>
<option value="September">September</option>
<option value="October">October</option>
<option value="November">November</option>
<option value="December">December</option>
</select>
<input type="submit" name="Submit" value="submit" />
</form>
<?php do { ?>
<p><table width="66%" border="1" cellpadding="0" cellspacing="2"
bordercolor="#CC3333">
<tr>
<td><?php echo $row_rs['title']; ?></td>
<td><?php echo $row_rs['country']; ?></td>
<td><?php echo $row_rs['category']; ?></td>
<td><?php echo $row_rs['month']; ?></td>
</tr>
</table>
</p>
<?php } while ($row_rs = mysql_fetch_assoc($rs)); ?>
</body>
<?php
mysql_free_result($rs);
?>
</html>

Report this message

#6: Re: Abfrage ergebislos

Posted on 2008-04-23 12:26:55 by Robert Fall

Gregor Kofler schrieb
> Sogar ganz sicher.
>
>> SELECT *
>> FROM festivals as f
>> INNER JOIN f_categories AS c ON c.id = f.category
>> INNER JOIN f_countries AS o ON o.id = f.country
>> INNER JOIN f_months AS m ON m.id = f.month
>> WHERE f.title LIKE %s
>> AND c.category LIKE %s
>> AND o.country LIKE %s
>> AND m.month LIKE %s
>> ORDER BY f.title
>
> Was ist %s? Sollte ohnedies '%s' heissen. Und nachdem kein Monatsname auf
> "s" endet, wird das Ergebnis immer leer sein.

Hallo
Danke.

Eine einzelne Tabelle läßt sich mit dieser Syntax (unten) problemlos
abfragen.
Auch wenn keines der Ergebnisse auf "s" endet.


SELECT * FROM fahrzeug WHERE auto like %s and farbe like %s and ps like %s

Robert

Report this message

#7: Re: Abfrage ergebislos

Posted on 2008-04-23 12:43:54 by Christian Kirsch

Robert Fall schrieb:
> Gregor Kofler schrieb
>> Sogar ganz sicher.
>>
>>> SELECT *
>>> FROM festivals as f
>>> INNER JOIN f_categories AS c ON c.id = f.category
>>> INNER JOIN f_countries AS o ON o.id = f.country
>>> INNER JOIN f_months AS m ON m.id = f.month
>>> WHERE f.title LIKE %s
>>> AND c.category LIKE %s
>>> AND o.country LIKE %s
>>> AND m.month LIKE %s
>>> ORDER BY f.title
>> Was ist %s? Sollte ohnedies '%s' heissen. Und nachdem kein Monatsname auf
>> "s" endet, wird das Ergebnis immer leer sein.
>
> Hallo
> Danke.
>
> Eine einzelne Tabelle läßt sich mit dieser Syntax (unten) problemlos
> abfragen.
> Auch wenn keines der Ergebnisse auf "s" endet.
>
>
> SELECT * FROM fahrzeug WHERE auto like %s and farbe like %s and ps like %s
>
>
Das gibt bei mir immer noch einen Syntaxfehler, denn der String nach
like MUSS in Anführungszeichen stehen.

Report this message

#8: Re: Abfrage ergebislos

Posted on 2008-04-23 13:51:42 by Robert Fall

> Anbei das ganze Script. Ist allerdings hauptsächlich eine
> PHP-Angelegenheit.
>
> Robert

..

Hab das Script nochmal überprüft:
einige Variablen waren falsch benannt.
Läuft zwar noch immer nicht,
Könnte falsch liegen, aber ich vermute daß eher der PHP-Code das Problem
ist.

Tut mir Leid.

Herzlichen Dank aber für eure Mithilfe.

Gruß Robert

Report this message

#9: Re: Abfrage ergebislos

Posted on 2008-04-23 18:01:22 by Sven Paulus

Robert Fall <magicweb@chello.at> wrote:
> K=F6nnte falsch liegen, aber ich vermute da=DF eher der PHP-Code das Pr=
oblem=20
> ist.

Warum schaust Du nicht einfach in Dein MySQL-Query-Log (-> Option "log" in
der Config), wie die Queries aussehen, die Dein Code erzeugt? Diese kannst
Du dann ja einfach mal mit Queries, die Du manuell ueber das
mysql-Kommandozeilentool ausfuehrst und die bekannterweise funktionieren,
vergleichen. Das ist dann nicht ganz so im Dunkeln rumgetappst ...

Report this message

#10: Re: Abfrage ergebislos

Posted on 2008-04-23 20:32:37 by Claus Reibenstein

Robert Fall schrieb:

> Anbei das ganze Script. Ist allerdings hauptsächlich eine
> PHP-Angelegenheit.

Und damit wird es hier nun _endgültig_ off topic.

PHP wird in news:de.comp.lang.php.* diskutiert. Speziell für
Datenbankthemen im Zusammenhang mit PHP ist
news:de.comp.lang.php.datenbanken da.

Wenn Du also willst, dass man Dir _hier_ hilft, poste bitte
_ausschließlich_ das reine SQL-Kommando. Falls Du Hilfe zu Deinem
PHP-Code suchst, schaue Dich in den zuvor genannten Gruppen um.

Gruß. Claus

Report this message

#11: Re: Abfrage ergebislos

Posted on 2008-04-24 08:29:43 by Thomas Rachel

Robert Fall schrieb:
> $query_rs = sprintf("SELECT *
> FROM festivals as f
> INNER JOIN f_categories AS c ON c.id = f.category
> INNER JOIN f_countries AS o ON o.id = f.country
> INNER JOIN f_months AS m ON m.id = f.month
> WHERE f.title LIKE %s
> AND c.category LIKE %s
> AND o.country LIKE %s
> AND m.month LIKE %s
> ORDER BY f.title", GetSQLValueString($colname_rs, "text"),
> GetSQLValueString($coltitle_rs, "text"), GetSQLValueString($colcategory_rs,
> "text"), GetSQLValueString($colcountry_rs, "text"),
> GetSQLValueString($colmonth_rs, "text"));

Und für diese Gruppe wäre *ausschließlich* der Wert von $query_rs
relevant gewesen.

HTH,

Thomas

Report this message