Variable mit Datenbankspalte überprüfen
Patrick
- php
0 Götz0 Thomas Luethi0 Patrick
Hallo,
ich möchte eine Variable, z.B. '$wert' mit der MYSQL-DB-Spalte 'ID' vergleichen.
Wenn der Wert der Variablen '$wert' nicht in der Spalte 'ID' enhalten ist, soll das PHP-Script 'sterben' --> if (....) {die();}
Bsp:
Variable:
$wert = 11111
Datenbank:
ID name ...
11110 xyz
11111 <-- Wert enthalten, Script wird fortgesetzt
11112 ghi
Gruß Patrick
Hallo Patrick!
[...] Variable, z.B. '$wert' mit der MYSQL-DB-Spalte 'ID' vergleichen.
Variable:
$wert = 11111
Datenbank:
ID name ...
11110 xyz
11111 <-- Wert enthalten, Script wird fortgesetzt
11112 ghi
Du solltest vielleicht die Datensätze erstmal selektieren, in nen Array packen, und dann kannst du vergleichen.
Und zwar ganz einfach:
if($db_array['ID'] == $wert)
{
// blablub
}
else
{
// stirb, oder so.
die();
}
Also, erstmal im PHP-Manual anschauen, wie man sich Datensätze aus ner Datenbank holt.
http://php.net/mysql sollte ein guter Einstiegs dazu sein ;)
MfG
Götz
Hallo,
ich möchte eine Variable, z.B. '$wert' mit der MYSQL-DB-Spalte 'ID' vergleichen.
Wenn der Wert der Variablen '$wert' nicht in der Spalte 'ID' enhalten ist, soll das PHP-Script 'sterben' --> if (....) {die();}
Du musst ganz gewoehnlich mit PHP die Verbindung zur DB herstellen,
eine SQL-Query absetzen und das Resultat mit PHP auswerten.
http://www.php.net/manual/de/ref.mysql.php
Die Query koennte z.B. so aussehen:
SELECT id FROM Tabelle WHERE id=$wert
Dann schaust Du z.B. mit mysql_num_rows(), ob es ein Resultat gibt.
Alternative (besser):
SELECT COUNT(*) FROM Tabelle WHERE id=$wert
Die Zahl steht dann im Resultat. Sollte fuer Dich 1 sein.
Gruesse,
Thomas
So habe ich das jetzt getestet, nur leider passiert gar nichts mehr, sobald der Wert nicht in der Datenbank aufgeführt ist.
//Von Vorseite über Formular übergeben: $wert = 11111, Beispiel
$host="localhost";
$user="benutzer";
$pwd ="passwort";
$db ="datenbank";
$tbl ="tabelle";
$conn = mysql_connect($host,$user,$pwd);
if (! $conn) {echo "<p>Verbindung zur Datenbank gescheitert!</p>\n";}
mysql_select_db($db);
$ergebnis = mysql_query("SELECT ID
FROM $tbl
WHERE ID
= '$wert'");
while ($test=mysql_fetch_array($ergebnis)) {
//Version 1
$numrows = mysql_num_rows($test);
if (! $numrows) {echo "<p>Kein Ergebnis</p>";}
else {echo "<p>Ergebnis</P";}
//Version 2
if ($test[ID] !== $wert) {
echo "<p>ID-Wert fehlt!</p>\n";
die();
}
Hallo,
So habe ich das jetzt getestet, nur leider passiert gar nichts mehr, sobald der Wert nicht in der Datenbank aufgeführt ist.
//Von Vorseite über Formular übergeben: $wert = 11111, Beispiel
Bist Du sicher, dass der Wert drin steht?
Wie uebernimmst Du ihn?
$ergebnis = mysql_query("SELECT
ID
FROM$tbl
WHEREID
= '$wert'");
Mach die Query lieber zuerst in eine Variable, dann kannst
Du sie auch anzeigen lassen:
$query="SELECT ID
FROM $tbl
WHERE ID
= '$wert'";
AFAIK sind die Backticks (`) um die Variablennamen nicht
notwendig, evtl. sogar falsch. Versuch's mal ohne:
$query="SELECT ID FROM $tbl WHERE ID = '$wert'";
echo "Query:<br>$query<br>\n";
$ergebnis = mysql_query($query);
while ($test=mysql_fetch_array($ergebnis)) {
//Version 1
$numrows = mysql_num_rows($test);
if (! $numrows) {echo "<p>Kein Ergebnis</p>";}
Du solltest IMHO eher pruefen, ob es 0 oder ob es mehr Zeilen sind.
if ($numrows<1)
{/* kein Ergebnis*/}
else
{/*mind. 1 Ergebnis*/}
(Null und false sind nicht immer gleichbedeutend!)
else {echo "<p>Ergebnis</P";}
^^ Da fehlt ">". Besser klein: </p>
//Version 2
if ($test[ID] !== $wert) {
Wo hast Du die Konstante ID definiert?
Und wo/wie den Array $test?
Und warum pruefst Du mit !== und nicht einfach mit != ?
Wenn der String "ID" gemeint ist, solltest
Du es unbedingt so schreiben: $test['ID'].
Lies: "Warum ist $foo[bar] falsch?"
http://www.php.net/manual/de/language.types.array.php#language.types.array.foo-bar
Wichtige Ausnahme: Innerhalb von doppelten Anfuehrungszeichen:
http://www.php.net/manual/en/language.types.string.php#AEN3553
http://www.php.net/manual/en/language.types.array.php#AEN3791
Gruesse,
Thomas