PHP/SQL Abfrage mit Wertausgabe

Der_baum

Mitglied
Hallo zusammen,

ich komme grade nicht so ganz weiter. Habe schon das W3- und PHP-Manual (+ das SQL-Manual) durchforstet und damit gearbeitet.

Ich will aus einer SQL-Datenbank einen Wert aus der Spalte PagePath ausgeben lassen, vorher gebe ich per Link:
HTML:
 <a href=“index.php?id=3>Bla Bla Bla</a>
Die ID mit, damit ich auch den richtigen Pfad für den Link bekomme. ;)

Habe mir das so ungefähr vorgestellt, da ich aber erst letzte Woche meine SQL Bücher bekommen habe und wegen der Arbeit noch nicht reinschauen konnte…. muss ich euch fragen.

PHP:
Include_once 'scripte/linkverwaltung/sql_connection.php';

$link_id = $_GET['id'];
$page_data = $sql_conn("SELECT LinkID, PagePath FROM Linkverwaltung WHERE $link_id='LinkID'");
						
echo $page_data['PagePath']; //Steht im Moment nur da, um zu Überprüfen ob der Links stimmt, später wird dann das Script eingefügt, welches den Pfad verarbeitet.


Grüße,
Daniel
 
PHP:
Include_once 'scripte/linkverwaltung/sql_connection.php';

$link_id = $_GET['id'];
$page_data_ = mysql_query("SELECT PagePath FROM Linkverwaltung WHERE LinkID=".$link_id);

$page_data = mysql_fetch_assoc($page_data_);
                        
echo $page_data['PagePath']; //Steht im Moment nur da, um zu Überprüfen ob der Links stimmt, später wird dann das Script eingefügt, welches den Pfad verarbeitet.

Das müsste dann so hinhauen.

Integerwerte müssen bei der Abfrage nicht enquoted werden.
 
Hi Igäl,

hab zwar gehofft, dass du mir nicht Hilfst, weil du mir ja gestern schon so super geholfen hast und ich dich nicht alleine in Anspruch nehmen will, aber .... deine Antwort ist, wie gestern schon, 100% Funktionsfähig.

Danke Dir!
Daniel
 
Schon gut... Muss grad eh warten weil unser Hoster den benötigten ISAPI-Filter net zum laufen bringt. Ja ich weiss, wer arbeitet schon mit Windows-Servern... Kein Problem meiner Stufe, ich hab niemals gesagt, dass die was mit .NET machen sollen ^^
 
Hi,

noch eine kleien Performance sache, .... zumindest Bilde ich mir ein, dass es schneller ist. :)

Ich habe diese Zeilen:
PHP:
$link_id = $_GET['id'];
$page_data_ = mysql_query("SELECT PagePath FROM Linkverwaltung WHERE LinkID=".$link_id);

so verändert:
PHP:
$page_data_ = mysql_query("SELECT PagePath FROM Linkverwaltung WHERE LinkID=".$_GET['id']);

Wie gesagt, ich bilde mir ein das es schneller ist.

Gruß
 
Hi,

dann mache ich es gleich lieber so:

PHP:
$dbh->exec("INSERT INTO REGISTRY (name, value)
VALUES (".$dbh->quote($name,PDO::PARAM_STR).", ".$dbh->quote($value,PDO::PARAM_INT).")");

oder so:

PHP:
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

da bei mir PHP 5.2.2 läuft.
Welche Variante ist nun schnell und/oder besser? Prepared Statement, oder PDO? Wobei beide Varianten absolutes Neuland für mich sind.

Gruß


EDIT: Habe gerade gesehen das PDO nur mit MySQL 3.x und 4.x funktioniert. Heißt also das ich es mit einem Prepared Statement lösen muss, right?
 
Zuletzt bearbeitet:
Du kannst natürlich auch selber etwas schreiben. Ich habe in meiner Datenbankklasse verschiedene Funktionen, die für das automatische Maskieren von Werten verantwortlich sind. Wenn du möchtest, kann ich dir die Klasse zur Verfügung stellen. Allerdings scheinst du fündig geworden zu sein und eine Klasse gefunden zu haben, die dir das abnimmt. Da ich dei von dir verwendeten Funktionalitäten nicht kenne, kann ich dir nichts näheres dazu sagen :)
 
Guten morgen,

sorry, dass ich nicht antworten konnte, war aber das komplette Wochenende Geschäftlich Unterwegs, ... und bin jetzt wieder in der Firma! :)
Ich habe mir das ganze am Wochenende durch den Kopf gehen lassen und etwas rumprobiert.
So weit bin ich jetzt:

PHP:
$link_id = $_GET['id'];
$page_data = "	SELECT page_path // Habe es auch schon mit Klammern Versucht
				FROM linkverwaltung
				WHERE LinkID= $link_id"; //Hier auch schon mit ()

try {
   $dbh = new PDO('mysql=$dbhost;dbname=$dbname', $dbuser, $dbpass);
   foreach ($dbh->query($page_data) as $row) {
	  print_r($row);
   }
   $dbh = null;
} catch (PDOException $e) {
   print "Error!: " . $e->getMessage() . "<br>";
   die();
}

Leider bekomme ich immer diesen Fehler: "Error!: invalid data source name".
Nachdem PDO für mich Neuland ist, wäre ich um Hilfe sehr dankbar!

@Igäl: Das mit der Maskierung ist mir leider nicht ganz so klar. Meine Gegebenheiten sind eigentlich nur, dass hinter der id=1 ein Pfad steht: "weg/zur/datei.php"

Gruß
 
Zuletzt bearbeitet:
Hi,

hier mein zweiter Versuch, geht lieder aber auch nicht.

PHP:
$db_conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);

$page_data = "SELECT PagePath FROM linkverwaltung WHERE link_id= :link_id";
$stmt = $db_conn->prepare($page_data);

$stmt->bindParam(':link_id', $_GET['id']);

$result = $stmt->execute();
$data = $result->fetch(PDO::FETCH_OBJ); // Zeile 75

print $data->PagePath;

$result = null;
$stmt = null;
$db_conn = null;

Was ich hierbei leider überhaupt nicht nachvollziehen kann:
Parse error: syntax error, unexpected ')', expecting '(' in /mnt/web2/index.php on line 75

EDIT: URL sieht folgendermaßen aus: meine-seite.de/index.php?id=3
 
Zuletzt bearbeitet:
Zurück