Ich habe ein Problem hier. Ich bekomme diesen Fehler, der Anzahl der gebundenen Variablen stimmt nicht mit der Anzahl der Token überein. Ich überprüfe meinen Code und scheint keinen Fehler zu haben. Wie auch immer, ich bin neu in dieser PDO-Sache.Fehler beim Ausführen der Abfrage: SQLSTATE [HY093]: Ungültige Parameternummer: Anzahl der gebundenen Variablen stimmt nicht mit der Anzahl der Token überein
Dies ist der Code, wie ich die Daten aus der Datenbank aufrufen in Form Code mein HTML
if(isset($_GET['idstudent'], $_GET['idbook'])){
$_SESSION['link']=$_GET['idstudent'];
$_SESSION['link2']=$_GET['idbook'];
$sessionidstudent = $_SESSION['link'];
$sessionidbook = $_SESSION['link2']; }
$query = "
SELECT
*
FROM viewlibrary
WHERE
id = :sessionidstudent AND
serialno = :sessionidbook
";
$query_params = array(
':sessionidstudent' => $_SESSION['link'],
':sessionidbook' => $_SESSION['link2']
);
try
{
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
$r=$stmt->fetch(PDO::FETCH_ASSOC); ?>
Dies ist
<form action="editpage.php" method="post" class="login, reminder">
<p>Student Matric Number:
<input type="text" class="login-input" name="addmatricno" id="addmatricno" value="<?php echo $r['matricno'] ?>" placeholder="Enter student matric number">
Student Name:
<input type="text" class="login-input" name="addname" id="addname" value="<?php echo $r['studentname'] ?>" placeholder="Enter student name">
Programme:
<input type="text" class="login-input" name="addprogramme" id="addprogramme" value="<?php echo $r['programme'] ?>" placeholder="Enter student programme">
Education Level:
<?php
if($r['education_level'] == "PHD"){
echo '<select name="selectedulevel" id="selectedulevel" class="login-input">';
echo '<option disabled>Please select education level</option>';
echo '<option value="PHD" selected>PHD</option>';
echo '<option value="MASTER">MASTER</option>';
echo '<option value="PHD">DEGREE</option></p></select>';
}
else if($r['education_level'] == "MASTER"){
echo '<select name="selectedulevel" id="selectedulevel" class="login-input">';
echo '<option disabled>Please select education level</option>';
echo '<option value="PHD">PHD</option>';
echo '<option value="MASTER" selected>MASTER</option>';
echo '<option value="PHD">DEGREE</option></p></select>';
}
else{
echo '<select name="selectedulevel" id="selectedulevel" class="login-input">';
echo '<option disabled>Please select education level</option>';
echo '<option value="PHD">PHD</option>';
echo '<option value="MASTER">MASTER</option>';
echo '<option value="PHD" selected>DEGREE</option></p></select>';
}
?>
<input type="submit" name="updatestudent" id="updatestudent" value="Update Student" class="login-submit" style = "width: 20%; text-align: center">
Last but not least Code meine Abfrage Echo.
$query = "
UPDATE student
SET
matricno = :addmatricno,
studentname = :addname,
programme = :addprogramme,
education_level = :selectedulevel
WHERE
id = :sessionidstudent
";
$query_params = array(
':addmatricno' => $_POST['addmatricno'],
':addname' => $_POST['addname'],
':addprogramme' => $_POST['addprogramme'],
':selectedulevel' => $_POST['selectedulevel']
);
try
{
// Execute the query to create the user
$stmt = $db->prepare($query);
//$stmt->bindValue(':sessionidstudent',$sessionidstudent);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
// Note: On a production website, you should not output $ex->getMessage().
// It may provide an attacker with helpful information about your code.
die("Failed to run query: " . $ex->getMessage());
}
// This redirects the user back to the login page after they register
echo '<script language="javascript">';
echo 'alert("Info updated successful.")';
echo '</script>';
header("Refresh: 0; updatebooks.php");
die();
Anmerkung: $ db $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
verweisen, wo ich auf andere Datei setzen, und ich kann meine Verbindung zur Datenbank hat kein Problem alles andere als sicher. Ich habe meinen Code viele Male überprüft, bekomme aber immer noch den gleichen Fehler.
Forget in Update-Abfrage bind'sessionidstudent' weg !! – Saty
Ja, ich habe das vergessen. Es tut uns leid. peinlich. Obwohl ich nicht wusste, dass die Variable nach der WHERE-Klausel auch in Abfrageparameter eingefügt werden muss. – AhKing