IMG dir는 db에 저장할 수 없지만 쿼리에 사용된 동일한 변수에서 볼 수 있습니다.
저는 산웨브의 아래 양식을 이용하여 제 서버에 이미지를 업로드하려고 합니다.여기서 찾을 수 있습니다.하지만 업로드를 누르면 새 엄지손가락이 완벽하게 로드됩니다.그러나 이미지를 보는 것과 동일한 변수를 사용하여 이미지를 데이터베이스에 업로드할 수 없습니다.왜요?나는 그것을 넣으려고 했습니다.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;
}
편집 2: 이제 쿼리가 실행되지만 "프로필 사진을 업로드할 수 없습니다"라는 피드백이 표시됩니다.쿼리가 제대로 실행되지 않는 이유는 무엇입니까?
편집 4: 변경을 시도했습니다.user_session = :session_user
로.id = 1
대신.업로드가 성공적으로 완료되지만 값은 다음에 삽입됩니다.profile_picture_temp
0으로 설정됩니다.어떻게든 bindParam이 값을 변경합니다. 왜죠?
편집 3: 이제 사용해 보았습니다.mysqli
뿐만 아니라.여기도 같은 결과입니다.반환을 업로드할 수 없습니다.그러나 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();
이 줄이 PHP 오류를 발생시키지 않는 것이 확실합니까?
$confirm_upload_db = $$profile_pic_db_upload->rowCount();
^^
그$$
(2달러 기호)는 변수를 참조하는 방법입니다. 하지만$profile_pic_db_upload
다른 변수의 이름이 포함되어 있지 않습니다. PDO 문 개체에 대한 참조입니다.
또 다른 쪽지. 그.rowCount()
function은 영향을 받는 행의 수를 반환합니다.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();
문제 자체를 식별할 수는 없지만, 다음을 추가하여 해결했습니다.UPDATE login l
가명을 사용해서 어떻게든 고쳤습니다.
언급URL : https://stackoverflow.com/questions/30539060/img-dir-cant-be-stored-in-db-but-viewed-from-the-same-variables-used-in-query
'sourcetip' 카테고리의 다른 글
SQL 서버 실제 데이터 유형, C#에 해당하는 것은 무엇입니까? (0) | 2023.08.21 |
---|---|
event.preventDefault()를 사용한 후 이벤트를 트리거하는 방법 (0) | 2023.08.21 |
Spring Security를 사용한 HTTPS 로그인이 HTTP로 리디렉션 (0) | 2023.08.16 |
유형 및 이름별 대상 입력(계속) (0) | 2023.08.16 |
Android 앱의 그리드 보기 VS 그리드 레이아웃 (0) | 2023.08.16 |