Gje*_*t G 17 php mysql sql ajax jquery
我正在尝试使用Sanwebe的以下表单将图像上传到我的服务器.
可以在这里找到.然而,当我按下上传时,新的拇指加载完全正常.但是,我的图像无法使用从中查看图像的完全相同的变量上传到数据库.怎么会?我尝试将db信息放在查询的前面.像这样:
echo '<div align="center">';
echo '<img src="images/profile-pictures/'.$thumb_prefix . $new_file_name.'" alt="Thumbnail">';
echo '</div>';
$profile_pic_temp = "../images/profile-pictures/" . $thumb_prefix . $new_file_name;
$profile_pic_full_temp = "../images/profile-pictures/" . $new_file_name;
$session_user = $_SESSION['user_confirm'];
require 'database.php';
$profile_pic_db_upload = $db->prepare("UPDATE login SET profile_picture_temp = :profile_pic_temp, profile_picture_full_temp = :profile_pic_full_temp WHERE user_session = :session_user");
$profile_pic_db_upload->bindParam(':session_user', $session_user, PDO::PARAM_STR);
$profile_pic_db_upload->bindParam(':profile_pic_temp', $profile_picture_temp, PDO::PARAM_STR);
$profile_pic_db_upload->bindParam(':profile_pic_full_temp', $profile_picture_full_temp, PDO::PARAM_STR);
$profile_pic_db_upload->execute();
$confirm_upload_db = $profile_pic_db_upload->rowCount();
if($confirm_upload_db != 0){
$popup_message = "Profile picture has been uploaded.";
echo $popup_message;
}
else{
$popup_message = "Profile picture could not be uploaded.";
echo $popup_message;
}
Run Code Online (Sandbox Code Playgroud)
编辑二: 查询现在运行,但是,我收到反馈"无法上传个人资料图片.".为什么查询无法正常运行?
编辑四:
我尝试user_session = :session_user改为id = 1改为.然后我成功上传,但是,只插入值profile_picture_temp并设置为0.不知怎的,bindParam会更改值.为什么?
编辑三:
我现在尝试使用mysqliaswell.这里结果相同.无法上传返回.但是,不会更改DB中的值.
$sql = "UPDATE login SET profile_picture_temp = ? AND profile_picture_full_temp = ? WHERE user_session = ?";
$stmt = $mysqli->prepare($sql) or die ("Database error<br>" . $sql . "<br><b>Error message:</b> " . $mysqli->error);
$stmt->bind_param("sss", $profile_picture_temp, $profile_picture_full_temp, $session_user);
$stmt->execute() or die("Something went wrong");
if($stmt->fetch()){
$popup_message = "Profile picture has been uploaded.";
echo $popup_message;
}
else{
$popup_message = "Profile picture could not be uploaded.";
echo $popup_message;
}
$stmt->free_result();
$stmt->close();
Run Code Online (Sandbox Code Playgroud)
spe*_*593 10
你确定这一行没有抛出PHP错误......
$confirm_upload_db = $$profile_pic_db_upload->rowCount();
^^
Run Code Online (Sandbox Code Playgroud)
该$$(两个美元符号)是我们如何引用变量变量; 但$profile_pic_db_upload不包含另一个变量的名称,它是对PDO语句对象的引用.
另一个说明.该rowCount()函数返回该UPDATE语句影响的行数; 如果UPDATE语句成功,但没有对该行进行实际更改(因为分配给列的值与已存储在列中的值相同),则rowCount()返回0.
(要更改该行为,让它返回匹配行的数量,您可以使用PDO::MYSQL_ATTR_FOUND_ROWS).
使用以下查询修复了该问题:
$profile_picture_temp = "../images/profile-pictures/" . $thumb_prefix . $new_file_name;
$profile_picture_full_temp = "../images/profile-pictures/" . $new_file_name;
$session_user = $_SESSION['user_confirm'];
$sql = "UPDATE login l SET l.profile_picture_temp = ?, l.profile_picture_full_temp = ? WHERE l.user_session = ?";
$stmt = $mysqli->prepare($sql) or die ("Database error<br>" . $sql . "<br><b>Error message:</b> " . $mysqli->error);
$stmt->bind_param("sss", $profile_picture_temp, $profile_picture_full_temp, $session_user);
$stmt->execute() or die("Something went wrong");
$result = $stmt->affected_rows;
if($result == 1){
$popup_message = "Profile picture has been uploaded.";
echo $popup_message;
}
else{
$popup_message = "Profile picture could not be uploaded.";
echo $popup_message;
}
$stmt->free_result();
$stmt->close();
Run Code Online (Sandbox Code Playgroud)
我无法确定问题本身,但是,我设法通过添加修复它UPDATE login l.使用别名以某种方式修复它.