Ich denke, dieser Code ist richtig, aber es funktioniert nicht richtig.So lösen Sie den Fehler "SQLSTATE [HY093]: Ungültige Parameternummer: Anzahl der gebundenen Variablen stimmt nicht mit der Anzahl der Token überein"?
Ich versuche, Daten zu aktualisieren, aber es gibt einen Fehler aus. Ich denke, dass dieses Problem während des Bindens gesehen wird, meine Vermutung ist vielleicht falsch!
Fehler
SQLSTATE [HY093]: Ungültige Parameternummer: Anzahl der gebundenen Variablen nicht mit Anzahl von Token
Was ist das Problem?
class.user.php{
public function edit_user($uname,$umail,$upass,$uaddress,$uglevel,$ustate,$userpic){
try
{
$new_password = password_hash($upass, PASSWORD_DEFAULT);
$stmt_edit = $this->conn->prepare('UPDATE users SET
user_name=:uname,
user_email=:umail,
user_pass=:upass,
user_address=:uadddress,
user_grade_level=:uglevel,
ustate=:ustate,
user_photo=:upic
user_id=:user_id
WHERE user_id=:user_id');
$stmt_edit->bindparam(":uname", $uname);
$stmt_edit->bindparam(":umail", $umail);
$stmt_edit->bindparam(":upass", $new_password);
$stmt_edit->bindparam(":uaddress", $uaddress);
$stmt_edit->bindparam(":uglevel", $uglevel);
$stmt_edit->bindparam(":ustate", $ustate);
$stmt_edit->bindparam(":upic", $userpic);
if($stmt_edit->execute()){
?>
<script>
alert('Successfully Updated ...');
window.location.href='user_list.php';
</script>
<?php
}
return $stmt_edit;
}
catch(PDOException $e)
{
echo $e->getMessage();`enter code here`
}
}
}
//edit_user.php
if(isset($_POST['btn_save_updates']))`enter code here`
{
$uname = strip_tags($_POST['txt_uname']);
$umail = strip_tags($_POST['txt_umail']);
$upass = strip_tags($_POST['txt_upass']);
$uaddress = strip_tags($_POST['txt_uaddress']);
$uglevel = strip_tags($_POST['txt_uglevel']);
$ustate = strip_tags($_POST['txt_ustate']);
$imgFile = $_FILES['user_image']['name'];//image file
$tmp_dir = $_FILES['user_image']['tmp_name'];//directory
$imgSize = $_FILES['user_image']['size'];//image file size
if($imgFile)
{
$upload_dir = 'LMS_students/'; // upload directory
$imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); // get image extension
$valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); // valid extensions
$userpic = rand(1000,1000000).".".$imgExt;
if(in_array($imgExt, $valid_extensions))
{
if($imgSize < 5000000)
{
unlink($upload_dir.$edit_row['user_photo']);
move_uploaded_file($tmp_dir,$upload_dir.$userpic);
}
else
{
$errMSG = "Sorry, your file is too large it should be less then 5MB";
}
}
else
{
$errMSG = "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
}
}
else
{
// if no image selected the old image remain as it is.
$userpic = $edit_row['user_photo']; // old image from database
}
// if no error occured, continue ....
if(!isset($errMSG))
{
$user -> edit_user($uname,$umail,$upass,$uaddress,$uglevel,$ustate,$userpic);
}
else{
?>
<script>
alert('user couldnt be Updated');
window.location.href='user_list.php';
</script>
<?php
}
}
?>
'user_id =: user_id' Ich denke, diese Linie hat ein Problem .. Übergeben Sie user_id? –
wie der Fehler sagte, Sie haben einfach nicht die gleiche Anzahl von Binded Param, vermissen Sie: userid – MacBooc
Sie können nicht Platzhalter entweder verwenden, obwohl, warum Sie "user_id" aktualisieren möchten, wenn es nicht ändert, ich don ' Ich weiß es. –