mySQL und eine AND Bedingung
Also ich habe eine mySQL abfrage:
Und der gibt mir immer folgende Fehlermeldung:
Wo ist da der Fehler langsam weiß ich nicht mehr weiter oder hab ich das ganz falsch aufgebaut???
Greetz
MaxTPayne
Edit: Ohne die WHERE Bedingung funktioniert es.
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 |
$ipt ="172.16.16.5";
$bqt ="BQ2257K03015";
$abfrage = "SELECT ip, bq FROM `hosts` where ip=$ipt AND bq=$bqt";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$iph[] = $row->ip;
$bqh[] = $row->bq;
}
|
Und der gibt mir immer folgende Fehlermeldung:
Zitat
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /pfad/zu/der/datei.php on line 33
Wo ist da der Fehler langsam weiß ich nicht mehr weiter oder hab ich das ganz falsch aufgebaut???
Greetz
MaxTPayne
Edit: Ohne die WHERE Bedingung funktioniert es.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »maxtpayne« (3. November 2004, 09:43)
Also ich würde einfach mal vermuten er hat keine Einträge gefunden!
mach mal unter $ergebnis = ...
wenn er dir da null ausgibt hat er keine Datensätze für diese Bedingung gefunden und es ist kein Wunder, das er den Fehler ausgibt.
MfG
NiBurhe
mach mal unter $ergebnis = ...
|
|
PHP-Quelltext |
1 |
echo "Anzahl der Datensätze: ".mysql_num_rows($ergebnis);
|
wenn er dir da null ausgibt hat er keine Datensätze für diese Bedingung gefunden und es ist kein Wunder, das er den Fehler ausgibt.
MfG
NiBurhe
Also der Fehler ist weg. Nun leider findet er nichts obwohl mindestens ein Datensatz übereinstimmt von den ca 1000 Stück. Denn das ist mein eigener und den hab ich per phpMyAdmin überprüft und ist auch alles gleich wodran liegt das?
Ich poste mal den ganzen Quelltext:
Ich hab das Script ein wenig schon umgeschrieben nunja nur leider funktioniert das immernoch nicht so wie ich das haben will
.
Wer eine bessere Idee hat wie ich das lösen kann gerne her
. Vieleicht als Hintergrundinformation:
Ich habe zwei Tabellen:
*netzmdb
*hosts
in der netzmdb sind folgende Spalten:
* bqn
* ipn
* namen
in der hosts sind folgende Spalten:
*iph
*bqh
Nun möchte ich beide Tabellen miteinander vergleichen und dann in einer Zeile immer ausgeben. Sprich ich nimm den ersten Eintrag von der netzmdb und kucke ob es so einen oder mehrere in der hosts gibt. Wenn übereinstimmungen gefunden sind sollen die dann in einer anderen Spalte ausgebeben werden. in etwa so:
netzmdb hosts
erster eiintrag | dazu passende(r) bqh und iph eintrag/einträge
und das halt mit allen Datensätzen.
Besten dank das ihr mir schon etwas weitergehohlfen habt
Greetz
MaxTPayne
Edit:
wenn ich bei $maxe = count ... die minus 1 wegmach bekomm ich schonmal die die netzmdb einträge angezeigt.
Ich poste mal den ganzen Quelltext:
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<html>
<head>
<title>Hier kommt noch ein Titel hin</title>
</head>
<body>
<?php
$host ="localhost";
$benutzername ="root";
$pw ="aasEda211 ;)";
$namedb ="atv";
// Connecting zur Datenbank
mysql_connect($host,$benutzername,$pw) or die ("Die Daten stimmen nicht");
// Daten hohlen
mysql_select_db($namedb) or die ("Die Datenbank existiert nicht");
$abfrage = "SELECT bqn, ipn, namen FROM `netzmdb`";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$bqn[] = $row->bqn;
$ipn[] = $row->ipn;
$namen[] = $row->namen;
}
echo'<table width="600">';
echo"<tr>";
echo"<td>netzmdb</td>";
echo"<td>hosts</td>";
echo"</tr>";
$maxi = count($bqn)-1;
for($i=0; $i<=$maxi; $i++)
{
$abfrage = "SELECT iph, bqh FROM `hosts` WHERE iph='".$ipn[$i]."' AND bqh='".$bqn[$i]."'";
$ergebnis = mysql_query($abfrage);
echo "Anzahl der Datensätze: ".mysql_num_rows($ergebnis);
while($row = mysql_fetch_object($ergebnis))
{
$iph[] = $row->iph;
$bqh[] = $row->bqh;
}
$maxe = count($iph)-1;
for($e=0; $e<=$maxe; $e++)
{
echo"<tr>";
echo"<td>$bqn[$i] | $ipn[$i]</td>";
echo"<td>$e $iph[$e] | $bqh[$e]</td>";
echo"<tr>";
}
}
echo"</tr>";
echo"</table>";
?>
</body>
</html>
|
Ich hab das Script ein wenig schon umgeschrieben nunja nur leider funktioniert das immernoch nicht so wie ich das haben will
.Wer eine bessere Idee hat wie ich das lösen kann gerne her
. Vieleicht als Hintergrundinformation:Ich habe zwei Tabellen:
*netzmdb
*hosts
in der netzmdb sind folgende Spalten:
* bqn
* ipn
* namen
in der hosts sind folgende Spalten:
*iph
*bqh
Nun möchte ich beide Tabellen miteinander vergleichen und dann in einer Zeile immer ausgeben. Sprich ich nimm den ersten Eintrag von der netzmdb und kucke ob es so einen oder mehrere in der hosts gibt. Wenn übereinstimmungen gefunden sind sollen die dann in einer anderen Spalte ausgebeben werden. in etwa so:
netzmdb hosts
erster eiintrag | dazu passende(r) bqh und iph eintrag/einträge
und das halt mit allen Datensätzen.
Besten dank das ihr mir schon etwas weitergehohlfen habt

Greetz
MaxTPayne
Edit:
wenn ich bei $maxe = count ... die minus 1 wegmach bekomm ich schonmal die die netzmdb einträge angezeigt.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »maxtpayne« (3. November 2004, 14:30)
|
|
PHP-Quelltext |
1 2 3 4 5 6 |
while($row = mysql_fetch_object($ergebnis))
{
$bqn[] = $row->bqn;
$ipn[] = $row->ipn;
$namen[] = $row->namen;
}
|
Du willst ja damit beabsichtigen, das er dir aus alles Daten einen array macht, aber so wie ich das sehe setzt er doch jedesmal wenn er die schleife durchläuft $bgn[]auf $row->bqn und fügt nichts hinzu, d.h. du hast am ende nur den letzten Datensatz in dem array, glaube ich zumindest
. Probier das mal so|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
while($row = mysql_fetch_object($ergebnis))
{
if($bqn != "")
{
$bqn .= ",";
}
if($ipn != "")
{
$ipn .= ",";
}
if($namen != "")
{
$namen .= ",";
}
$bqn .= $row->bqn;
$ipn .= $row->ipn;
$namen .= $row->namen;
}
$bqn = explode("," $bqn);
$ipn = explode(",", $ipn);
$name = explode(",",$name);
|
So hast du am ende alle Werte in den Array, auch wenn es nicht schön ist.
Oder probier mal mysql_fetch_array
MfG
NiBurhe
@NiBurhe das mach ich immer so und funktioniert bis jetzt eigentlich auch immer
. Denn beim ersten select werden auch alle Daten geladen in dem Array nur irgendwie zickt der bei zweiten rum mit der bedingung 
@shura gaaaaaaaanz viele nullen gibt er mir aus hat das was zu bedeuten?
Greetz
MaxTPayne
. Denn beim ersten select werden auch alle Daten geladen in dem Array nur irgendwie zickt der bei zweiten rum mit der bedingung 
@shura gaaaaaaaanz viele nullen gibt er mir aus hat das was zu bedeuten?
Greetz
MaxTPayne
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »maxtpayne« (4. November 2004, 07:37)
so wenn ich jetzt error_reporting mach kommt diese Fehlermeldung:
Notice: Undefined variable: iph in /opt/lampp/htdocs/atv/vergleichen.php on line 51
So sieht mein Script jetzt aus:
Notice: Undefined variable: iph in /opt/lampp/htdocs/atv/vergleichen.php on line 51
So sieht mein Script jetzt aus:
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
<html>
<head>
<title>Hier kommt noch ein Titel hin</title>
</head>
<body>
<?php
error_reporting(E_ALL);
$host ="localhost";
$benutzername ="root";
$pw ="aasEda211 ;)";
$namedb ="atv";
// Connecting zur Datenbank
mysql_connect($host,$benutzername,$pw) or die ("Die Daten stimmen nicht");
// Daten hohlen
mysql_select_db($namedb) or die ("Die Datenbank existiert nicht");
$abfrage = "SELECT bqn, ipn, namen FROM `netzmdb`";
$ergebnis = mysql_query($abfrage);
echo mysql_errno();
echo "<br><br>";
echo mysql_error();
while($row = mysql_fetch_object($ergebnis))
{
$bqn[] = $row->bqn;
$ipn[] = $row->ipn;
$namen[] = $row->namen;
}
echo'<table width="600">';
echo"<tr>";
echo'<td width="300">netzmdb</td>';
echo'<td width="300">hosts</td>';
echo"</tr>";
$maxi = count($bqn)-1;
for($i=0; $i<=$maxi; $i++)
{
$abfrage = "SELECT iph, bqh FROM `hosts` WHERE iph='".$ipn[$i]."' AND bqh='".$bqn[$i]."'";
$ergebnis = mysql_query($abfrage);
echo"<br><br>";
echo mysql_errno();
echo "<br><br>";
echo mysql_error();
while($row = mysql_fetch_object($ergebnis))
{
$iph[] = $row->iph;
$bqh[] = $row->bqh;
}
echo mysql_error();
$maxe = count($iph)-1;
for($e=0; $e<=$maxe; $e++)
{
echo"<tr>";
echo"<td>$bqn[$i] | $ipn[$i]</td>";
echo"<td>$e $iph[$e] | $bqh[$e]</td>";
echo"<tr>";
}
}
echo"</tr>";
echo"</table>";
?>
</body>
</html>
|
Dann hat er keinen Datensatz gefunden...
denn das Array iph exisiert noch nicht...
denn das Array iph exisiert noch nicht...
Über mich: www.heinervdm.de
Persönlich Mitteilungen an mich bitte als PN (nicht Email) hier im Forum. ICQ und Skype bitte nur in Notfällen.
Persönlich Mitteilungen an mich bitte als PN (nicht Email) hier im Forum. ICQ und Skype bitte nur in Notfällen.
ich hab jetzt, glaube ich, den Fehler gefunden 
Ich importiere die beiden Tabellen ja aus jeweils einer *.csv Datei. und die ist so aufgebaut:
feld;feld;feld
Nun die importfunktion die ich geschrieben hat funktioniert zu 100% wenn man feld;feld;feld; macht. Vieleicht liegt es dann daran das beim einfügen soviele Leerzeichen noch dazueingefügt werden bis die maximale Zeichenanzahl pro Feld erreicht ist.
Denn wenn ich fünf Testdatensätze einfüge funktioniert das auch einwandfrei. Die Datensätze sind alle durcheinander etc und nicht alle gleich und er macht genau das was er machen soll
. Ich denke da ich bei der netzmdk csv ja noch namen hab das da dann die restlichen Leerzeichen reingenommen werden und da die hosts nur aus iph und bqh hat dann halt die bqh die unnötigen Leerzeichen.
Greetz
MaxTPayne
Lösung:
Also das Problem war wirklich die csv Datei :/. Die hatte am ende kein ; und das Importscript hat dann soviele Zeichen import bis die maximale Zeichen zahl erreicht war. Deswegen konnte auch nie eine übereinstimmung gefunden werden
)))

Ich importiere die beiden Tabellen ja aus jeweils einer *.csv Datei. und die ist so aufgebaut:
feld;feld;feld
Nun die importfunktion die ich geschrieben hat funktioniert zu 100% wenn man feld;feld;feld; macht. Vieleicht liegt es dann daran das beim einfügen soviele Leerzeichen noch dazueingefügt werden bis die maximale Zeichenanzahl pro Feld erreicht ist.
Denn wenn ich fünf Testdatensätze einfüge funktioniert das auch einwandfrei. Die Datensätze sind alle durcheinander etc und nicht alle gleich und er macht genau das was er machen soll
. Ich denke da ich bei der netzmdk csv ja noch namen hab das da dann die restlichen Leerzeichen reingenommen werden und da die hosts nur aus iph und bqh hat dann halt die bqh die unnötigen Leerzeichen. Greetz
MaxTPayne
Lösung:
Also das Problem war wirklich die csv Datei :/. Die hatte am ende kein ; und das Importscript hat dann soviele Zeichen import bis die maximale Zeichen zahl erreicht war. Deswegen konnte auch nie eine übereinstimmung gefunden werden
))) Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »maxtpayne« (4. November 2004, 11:58)


