(MYSQL) Datenbankabfrage erzeugt Fehlermeldung, warum?
Knud Schröder
- php
0 Ludwig Ruderstaller0 brand0 brand
Hallo Forummer !
Bin PHP am lernen und bastle mir hierfür mal ein paar einfache Scripts, die man später immer
gebrauchen kann. Da ist aber nun so ein kleines Script, das mir die letzten Ideen klaut, ich finde den
Fehler nicht:
$verbindung = @mysql_connect("localhost","","");
$e_check = $e_plz.strtoupper(substr($e_strasse,0,5));
$abfrage = "select * from kunden order by kdnr where check=$e_check";
$erg = mysql_db_query("niedax",$abfrage,$verbindung);
if (mysql_num_rows($erg) < 1) {
Genau bei meiner gekennzeichneten Stelle (wo die Abfrage abgeschickt wird, da krachts es:
Warning: 0 is not a MySQL result index in c:\httpd\HtDocs/adr_new.php3 on line 13
Aalle Variablen mit $e_irgendwas sind die Formular-Variablen. Die Datenbankfelder sind gleichlautend, nur
ohne 'e_'.
Ohne die Where-Klausel geht's. Aber sobald ich eine dabei habe (obwohl das nicht meiner erste ist...),
dann gibt's wieder die Meldung.
Hat jemand eine Begründung?
Hallo,
$verbindung = @mysql_connect("localhost","","");
da du hier ein @ vor dem connect gemacht hast weißt du nicht sicher ob auch der connect zustande kam. auserdem feld dir was ihc hier so sehe die auswahl der datenbank.
Ich hab da eien kleine funktion dafür:
function db_connect()
{
$hostname="localhost";
$db_username="xxxx";
$db_password="xxxx";
$dbname="xxxx";
MYSQL\_CONNECT($hostname, $db\_username, $db\_password) or die("FEHLER: Es kann keine Verbindung zum Datenbank Server hergestellt werden!.");
mysql\_select\_db("$dbname") or die("FEHLER: Es kann nicht auf die Datenbank Tabelle zugegriffen werden!");
}
$e_check = $e_plz.strtoupper(substr($e_strasse,0,5));
$abfrage = "select * from kunden order by kdnr where check=$e_check";
das order würde ich nach hinten stellen (siehe unten)
$erg = mysql_db_query("niedax",$abfrage,$verbindung);
willst du hier nur test ob der query erfolgreich war? Das würde ihc so lössen: (inkl obener funktion:)
db_connect();
$abfrage = "select * from kunden where check=$e_check order by kdnr DESC";
if($result=mysql_query($abfrage)){
echo "true";
while(list($feld1,$feld2,$feld3....)=mysql_Fetch_row($result)){
#zb.
echo "<tr><td>$feld1</td></td>$feld2</td usw.</tr>";
}
}else{
echo "False";
}
if (mysql_num_rows($erg) < 1) {
wie gesagt diese zeile bringt meiner ansicht nach nichts.
lg
Ludwig
Hi!
$abfrage = "select * from kunden order by kdnr where check=$e_check";
wandle dies in folgendes um:
$abfrage = "select * from kunden order by kdnr where check='$e_check'";
dann sollte es funzen. Es wird sonst nicht der Inhalt der Variable $e_check im Query an die DB gesandt, sonder "$e_check" als Zeichenkette.
mfG
BRAND
Hi!
Es wird sonst nicht der Inhalt der Variable $e_check im Query an die DB gesandt, sonder "$e_check" als Zeichenkette.
sorry, da hab ich mich vertan. Es wird schon der Inhalt von $e_check übertragen, allerdings gelangt folgende query zur DB (wenn du die ' wegläßt)
Annahme: $e_check="test"
->...where check=test
du brauchst aber ...where check='test'
so, das sollte jetzt stimmen
mfG
BRAND