carl7n
Goto Top

MySQL in PHP mit Variablen

Hallo,

ich habe PHP-Grundkenntnisse, schaffe es aber nicht, nach meinen Vorstellungen ein paar kleine PHP-Scripts zusammen arbeiten zu lassen. Vielleicht kann mir hier ja jemand weiterhelfen face-smile

connect.php

<?php
$wo = "localhost";
$wer = "benutzer";
$wie = "passwort";
$db = "datenbank";

$conn = mysql_connect ($host, $user, $pw)
or die ("Zugangsdaten stimmen nicht.");
mysql_select_db($db)
or die ("Die Datenbank wurde nicht gefunden.")
?>

functions.php

<?php
function gibAus()
{
$abfrage = "SELECT id FROM lies";
$ergebnis = mysql_query($abfrage);

while ($row = mysql_fetch_object($ergebnis))
{
echo "$row->id";
echo "<br />";
}
?>

test.php

<?php
include("connect.php");
include("functions.php");

gibAus ();
?>

connect.php funktioniert soweit; wenn ich die Datei konfiguriert aufrufe, zeigt sie (erwartungsgemäß) gar nichts an. Gebe ich falsche Werte als Variablen an, kommen die entsprechenden Fehlermeldungen.

functions.php möchte ich noch anpassen, und zwar so, dass die Funktion jeweils den später definierten Wert weitergibt... Müsste ungefähr so aussehen:
functions2.php

<?php
function gibAus($wert)
{
$abfrage = "SELECT $wert FROM lies";
$ergebnis = mysql_query($abfrage);

while ($row = mysql_fetch_object($ergebnis))
{
echo "$row->$wert";
echo "<br />";
}
?>
Das funktioniert allerdings nicht. Rufe ich z.B.
gibAus("id") auf, sollte entsprechend "SELECT id FROM lies" und "echo "$row-id";" passieren, was aber nicht der Fall ist.

test.php gibt aktuell gar nichts aus. Wahrscheinlich ist das irgend ein blöder Anfängerfehler, aber ich finde ihn einfach nicht.

Könnt Ihr mir sagen, was ich am Code ändern muss, damit es funktioniert? Oder einen Tipp geben, wo der Fehler liegt?

Danke & beste Grüße

Content-ID: 278615

Url: https://administrator.de/contentid/278615

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

Tjelvar
Tjelvar 29.07.2015 aktualisiert um 14:07:25 Uhr
Goto Top
setz das include von der connect mal in die jeweiligen phpdateien wo aauf die datenbank zugegriffen wird
carl7n
carl7n 29.07.2015 aktualisiert um 14:08:49 Uhr
Goto Top
Ahh, so geht es face-smile Riesigen Dank!!

(Falls jemand das Script auch benutzen möchte: ich habe in der functions.php die letzte Geschweifte-Klammer-Zu vergessen; wenn man in der Datei wie von @Tjelvar gesagt die verbinden.php einbindet und die Klammer ergänzt, läuft es face-smile)

EDIT: die Funktion funktioniert nun zwar. Allerdings nur als gibAus(). Wenn ich gibAus("id") o.Ä. aufrufen will, passiert nichts.
Tjelvar
Tjelvar 29.07.2015 um 14:19:02 Uhr
Goto Top
functions.php
>
> <?php
> function gibAus()
> {
> $abfrage = "SELECT id FROM lies";
> $ergebnis = mysql_query($abfrage);
>
> while ($row = mysql_fetch_object($ergebnis))
> {
> echo "$row->id";
> echo "<br />";
> }
> ?>

<?php
function foo ($arg_1, $arg_2, ..., $arg_n)
{
echo "Beispielfunktion.\n";
return $retval;
}
?>

Das ist das Beispiel für eine Funktion, um eine Variable in eine Funktion mitzugeben musst du natürlich auch der funktion sagen dass sie eine Variable erwarten soll
carl7n
carl7n 29.07.2015 um 14:30:29 Uhr
Goto Top
Zitat von @Tjelvar:

<?php
function foo ($arg_1, $arg_2, ..., $arg_n)
{
echo "Beispielfunktion.\n";
return $retval;
}
?>

Das funktioniert irgendwie nicht mit der MySQL Abfrage. Folgendes läuft problemlos:

<?php
function test($wert)
{
echo "Eingabe war $wert";
}
?>

Wenn ich das aber 1:1 an meine functions.php anpasse, werden keine Daten ausgegeben:

<?php
include("connect.php");

function gibAus($arg_1)
{
$abfrage = "SELECT $arg_1 FROM lies";
$ergebnis = mysql_query($abfrage);

while ($row = mysql_fetch_object($ergebnis))
{
echo "$row->$arg_1";
echo "<br />";
}
}

gibAus("id");
?>

Ich habe auch dieses Schema ausprobiert, allerdings ebenfalls ohne Erfolg:
$abfrage = "SELECT ".$arg_1." FROM lies";
Tjelvar
Lösung Tjelvar 29.07.2015 aktualisiert um 14:56:17 Uhr
Goto Top
Setz mal im Header "error_reporting(E_ALL);" um dir jeden Fehler ausgeben zu lassen, dann siehst du eventuell wo dein Problem ist
carl7n
carl7n 29.07.2015 um 14:47:45 Uhr
Goto Top
Danke für den Tipp. Ich bekomme keine Fehlermeldungen, egal, in welches Script ich den Code im Header einbaue.

Ich teste die Scripts unter OS X mithilfe von MAMP; vielleicht liegt der Fehler hier (wobei ich nirgends eine Einstellung finden konnte, in der man Error Reporting an- oder abschalten kann).

error_reporting(-1); funktioniert im Übrigen ebenfalls nicht :/
Tjelvar
Tjelvar 29.07.2015 um 14:50:52 Uhr
Goto Top
http://www.phpknowhow.com/configuration/php-ini-error-settings/

schau mal in der PHP.ini vllt hilft dir das. Aber ansonsten merkwürdig.
carl7n
carl7n 29.07.2015 um 14:52:16 Uhr
Goto Top
Update:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>

Nun bekomme ich Fehlermeldungen.

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /Users/zll/dev/web/php projekt/connect.php on line 9

Line 9 ist:
function gibAus($arg_1)

Die Testdatei zeigt zwar den obigen Fehler an, gibt aber trotzdem nun die korrekten Werte aus.
Tjelvar
Lösung Tjelvar 29.07.2015 aktualisiert um 15:00:35 Uhr
Goto Top
Die Fehlermeldung sagt nur, dass mysql_connect() veraltet ist und bald aus PHP entfernt wird
carl7n
carl7n 29.07.2015 um 15:01:11 Uhr
Goto Top
Das habe ich soweit verstanden. mysqli scheint der neue Befehl zu sein, ich suche mir die Infos zusammen. Jetzt kann es aber zumindest mal weitergehen mit meinem Projekt face-smile Vielen Dank für Deine Hilfe!