T
Tini
New member
- Beiträge
- 1
- Punkte Reaktionen
- 0
Hallo liebe Foren Mitglieder,
ich baue gerade eine Webseite mit Datenbank und versuche es gerade das erste mal mit PHP. Einloggen usw, klappt alles, wenn nicht das große ABER wäre.
Ich benutze PDO und man loggt sich mit Mail und Passwort ein. Ich brauch aber für die Session die userid um die Datenbank mit Fremdschlüsseln zu beschreiben.
so sieht jetzt der Versuch aus die Userid zu finden beim Login:
....und wenn ich in der Session versuche die Fremdschlüsseltabelle zu beschreiben gibt es lauter Fehler.
was ihm jetzt nicht gefällt ist das execute(); und PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens. Jetzt zeigt er mir auch eine Fehlermeldung in einem anderen Php Abschnitt wo $stmt->execute();
steht.
Kann mir Irgendwer helfen? Vielen lieben Dank im Vorraus.
Liebe Grüße Tini
ich baue gerade eine Webseite mit Datenbank und versuche es gerade das erste mal mit PHP. Einloggen usw, klappt alles, wenn nicht das große ABER wäre.
Ich benutze PDO und man loggt sich mit Mail und Passwort ein. Ich brauch aber für die Session die userid um die Datenbank mit Fremdschlüsseln zu beschreiben.
so sieht jetzt der Versuch aus die Userid zu finden beim Login:
PHP:
<?php
if(isset($_POST["submit"])){
require("mysql.php");
$stmt = $mysql->prepare("SELECT * FROM user WHERE mail = :mail");
//$stmt = $mysql->prepare("SELECT id FROM user WHERE mail = :mail");
$stmt->bindParam(":mail", $_POST["mail"]);
$stmt->execute();
$count = $stmt->rowCount();
if($count == 1){
//Username ist frei
$row = $stmt->fetch();
$row ["userid"] = $_SESSION["userid"]; //test user id speichern
$stmt->bindParam(":userid", $_SESSION["userid"]); //test user id speichern
$stmt->execute(); //test user id speichern
if(password_verify($_POST["pw"], $row["passwort"])){
session_start();
$_SESSION["mail"] = $row["mail"];
$_SESSION["userid"] = $row["userid"]; //test user id speichern
header("Location: geheim_kurs_formular.php");
//test id
$result = mysql_query("SELECT userid FROM user WHERE mail = ?");
if (!$result) {
echo 'Konnte Abfrage nicht ausführen: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
echo $row[0]; // 42
$result = $_SESSION["userid"];
$search_user = $mysql->prepare("SELECT userid FROM user WHERE mail = ? AND passwort = ?");
$search_user->bind_param('ss',$mail,$passwort);
$search_user->execute();
$search_result = $search_user->get_result();
if($search_result->num_rows == 1):
$search_object = $search_result->fetch_object();
$_SESSION['mail'] = $search_object->userid;
endif;
// test id ende
} else {
echo "Der Login ist fehlgeschlagen";
}
} else {
echo "Der Login ist fehlgeschlagen";
}
}
?>
....und wenn ich in der Session versuche die Fremdschlüsseltabelle zu beschreiben gibt es lauter Fehler.
PHP:
<?php
if(isset($_POST["submit"])){
require("mysql.php");
{
//Username ist frei
{
//User anlegen
$_SESSION["userid"] = $userid;
$stmt = $mysql->prepare("INSERT INTO ort (name, strasse, hausnummer, plz, ort, tel returning id) VALUES (:name, :strasse, :hausnr, :plz, :ort, :tel, :id)");
//------------------------ Test id aus ort in veranst_ref --------
$stmt = $mysql->prepare("INSERT INTO veranst_ort (no, veranstalter_id, ort_ref) VALUES (NULL, :userid, :id)");
// (insert into ort (name) values ('Name 1') returning id) insert into detail (master_id, val) select id, 'das kommt in detail' from new_id;
// $id = $_SESSION['currentid'];
//if ( isset($_POST['first_name']) && isset($_POST['last_name']) && isset($_POST['summary'])) {
//$sql = "INSERT INTO profile (first_name, last_name, summary,userid)
// VALUES (:first_name, :last_name, :summary,:userid)";
// $stmnt = $pdo->prepare($sql);
// $stmnt->execute(array(
// ':first_name' => $_POST['first_name'],
// ':last_name' => $_POST['last_name'],
// ':summary' => $_POST['summary'],
// ':userid' => $id;
// ));
// $_SESSION['success'] = "Record added";
// header("Location: index.php");
// return;
// }
//------------------------- Test ID aus ort ende ------------------
$stmt->bindParam(":name", $_POST["name"]);
$stmt->bindParam(":strasse", $_POST["strasse"]);
$stmt->bindParam(":hausnr", $_POST["hausnummer"]);
$stmt->bindParam(":plz", $_POST["plz"]);
$stmt->bindParam(":ort", $_POST["ort"]);
$stmt->bindParam(":tel", $_POST["telefon"]);
$stmt->bindParam(":id", $id, PDO::PARAM_STR);
$stmt->bindParam(":userid", $_SESSION["userid"]);
//$stmt->bindParam(":mail", $mail, PDO::PARAM_STR);
$stmt->execute();
echo "Dein Veranstaltungsort wurde angelegt";
}
}
}
?>
was ihm jetzt nicht gefällt ist das execute(); und PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens. Jetzt zeigt er mir auch eine Fehlermeldung in einem anderen Php Abschnitt wo $stmt->execute();
steht.
Kann mir Irgendwer helfen? Vielen lieben Dank im Vorraus.
Liebe Grüße Tini