Php mysql suchausgabe

karloff

karloff

Routinier
Moin,

hab ein Problem mit php und mysql wo ich einfach nicht mehr weiterweiß.
Was das Script soll, es soll den dateinamen und den vollstänigen path ausgeben, der dann verwendet wird um das Bild anzuzeigen.
Zum Script:
Suchfunktion:
Code:
<html>
<body>
Bitte Artikelnummer eingeben:
<form action = "search.php" method = "post" target = "search">
<input name="search" size="20">
<input type = "submit">
</form>
</body>
</html>

PHP gefriggel:
PHP:
<?php
include ("database_connection.php");
?>

<?php
$searchstring = $_POST['search'];
$ausgabe1 = mysql_query("SELECT artnr,path from bindinfos WHERE artnr LIKE '%$searchstring%'");
while ($row = mysql_fetch_row($ausgabe1))
 {
echo "$row[0] $row[1] <br />";
 }
?>

Bekomme immer die Meldung:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/localhost/htdocs/search.php on line 8

Was mache ich falsch?

Und wenn ich eh schon mal poste weiß jemand wie ich die outputs für artnr und path abfangen kann oder tut das schon 'echo "$row[0] $row[1]'
Bzw. wenn ja kann ich die später irgendwo in standart html einbinden?

Ich bitte um Nachsicht, ist das erste mal das ich mit php und mysql arbeite.
 
ich würde abprüfen, ob die Query überhaupt sauber durch geht und keinen Error produziert.

... und Du solltest die übergebenen Variablen noch parsen, damit dort keine bösen Dinge drin stehen...
 
also wenn ich die db Anfrage mit SELECT artnr,path from bindinfos WHERE artnr LIKE '%$searchstring%'");
direkt in der mysql console ausführe als mit wert für searchstring dann klappt es und ich bekomme meine daten.

Allerdings weiß ich nicht wie ich so eine Überprüfung in php einbauen kann :/
 
Zuerst einmal solltest du Prepared-Statements einsetzen und *niemals* SELECT * FROM abcde WHERE .... $variable ....." einsetzen. Hier kann es leicht passieren, dass man durch geschicktes Manipulieren eine ganz andere Query durchführt. Das sollte man sich einfach komplett abgewöhnen, nicht mal zum Lernen am Anfang.

Wenn du eine Query mit Parametern aufrufen willst, mach das immer mit prepared Statements. Eine Anleitung gibts hier: http://www.tutorials.de/forum/php-t...enbankzugriffe-durch-prepared-statements.html

Schreib dein Skript einfach dementsprechend um (sollte ca. 10 Minuten dauern), dann sollte es klappen. (Hat auch den Vorteil, dass du dann innerhalb von 1 Minute auf eine andere DB als MySQL wechseln kannst)
 
Und/oder lass dir die Query doch zusätzlich mal mit ausgeben...
 
@sackeierei, danke für den tipp aber ich glaub da muss ich vorerst passen, ich hab schon den halben tag gebraucht bis ich die paar zeilen zusammen hatte.

@daboss: ich hab bei search.php noch mal
echo $_POST['search'];
eingefügt sollte das nicht eigentlich die variable für den mysql string auswerfen?
Weil irgendwie passiert da gar nichts und ich hab kA wieso.

Wie gesagt befasse mich seit genau 2 Tagen damit ...

edit: oder kann es daran liegen das ich da mit frames arbeite und der das nicht vernünftig durchreicht bei frames?
 
Zuletzt bearbeitet:
Dann wird $_POST['search'] nicht existieren....

PHP:
print("<pre>");print_r($_POST);print("</pre>");
sollte dir alles ausgeben, was so in POST steckt.... und mich irritiert das target-Attribut im Formular, weil ichs nicht kenne und von daher weglassen würde...
 
Okay hab das target weggelassen.
Nachdem ich alles unterhalb des mysql strings auskommentiert hatte lief der array auch durch:
Code:
Array
(
    [search] => 123
    [submit] => Daten absenden
)

Jetzt bleibt nur noch die Frage offen was in den letzten Zeilen falsch läuft, aufjedenfalls schonmal danke bis hier hin.


Edit: Langsam bekomme ich das Gefühl das der sql string nicht ganz okay ist, obgleich wenn ich ihne ohne variable auf der db ausführe nen ergebniss bekomme.

Gibt es eine Möglichkeit nen trace auf die db zu machen um zu schauen was passiert wenn das php script läuft?
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Geschafft,

danke für eure Hilfestellungen.

Hier noch mal das script:

PHP:
<?php
include ("database_connection.php");
?>

<?php
print("<pre>");print_r($_POST);print("</pre>");
//echo $_POST['search'];
mysql_select_db(bilddaten);
$searchstring = $_POST['search'];
$ausgabe1 = mysql_query("SELECT artnr,path from bildinfos WHERE artnr LIKE '%$searchstring%'");
//echo $searchstring;
$menge = mysql_num_rows($ausgabe1);
echo "$menge Bilddaten gefunden<br/>";
print("<pre>");print_r($ausgabe1);print("</pre>");
while ($test = mysql_fetch_row ($ausgabe1))
{
echo $test[0] <br />;
echo $test[1] <br />;
}
?>
 
Zuletzt bearbeitet:

Ähnliche Themen

Variablen in Session speichern

dovecot und postfix Konfiguration Problem

MySQL-Variable in php-Funktion

datei bei upload umbenennen

Automatische Weiterleitung und php

Zurück
Oben