2015-05-29 4 views
17

Sto provando a caricare un'immagine sul mio server usando il seguente modulo di Sanwebe. Can be found here. Tuttavia, quando premo il caricamento, il nuovo pollice si carica perfettamente bene. Tuttavia, la mia immagine non può essere caricata nel database utilizzando le stesse identiche variabili da cui viene visualizzata l'immagine. Come mai? Ho provato a inserire le informazioni db solo di fronte alla query. Come questo:La dir IMG non può essere memorizzata in db ma vista dalle stesse variabili utilizzate nella query

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; 
} 

EDIT DUE: La query funziona ora, tuttavia, ottengo le valutazioni "Foto del profilo non può essere caricato.". Come mai la query non viene eseguita correttamente?

EDIT QUATTRO: Ho provato a cambiare il user_session = :session_user-id = 1 invece. Vengo quindi caricato correttamente, tuttavia, il valore viene inserito solo in profile_picture_temp ed è impostato su 0. In qualche modo, bindParam modifica il valore. Perché?

montaggio a tre: Ora ho provato con mysqli pure. Stessi risultati qui. Non è stato possibile caricare il reso. Tuttavia, non modifica il valore in 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(); 
+2

Hai attivato [** ERRMODE :: PDO_EXCEPTION ** http://php.net/manual/en/pdo.error-handling.php](http://php.net/manual/en/pdo. error-handling.php) quindi verrà generata un'eccezione quando si verifica un errore PDO? – spencer7593

+0

@ spencer7593 L'ho installato ora e non ho errori. Questa è una cosa così strana. Qualcosa non va nella mia domanda, tuttavia non riesco a vederlo. – PhyCoMath

+0

@ spencer7593 Ottengo il seguente errore se inserisco l'eco del div BENEATH della query. 'x.ajaxTransport.send @ jquery.min.js: 6x.extend.ajax @ jquery.min.js: 6g @ jquery.form.min.js: 7a.fn.ajaxSubmit @ jquery.form.min.js: 7 (funzione anonima) @ scripts.js: 30x.event.dispatch @ jquery.min.js: 5x.event.add.v.handle @ jquery.min.js: 5' – PhyCoMath

risposta

8

Il problema è stato risolto utilizzando la seguente query:

$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(); 

non riesco a identificare il problema in sé, tuttavia, sono riuscito a risolvere il problema con l'aggiunta di UPDATE login l. Usare alias lo ha risolto in qualche modo.

10

Sei sicuro che questa linea non sta gettando un errore di PHP ...

$confirm_upload_db = $$profile_pic_db_upload->rowCount(); 
        ^^ 

I $$ (due simboli del dollaro) sono il modo in cui fare riferimento a una variabile di variabili; ma $profile_pic_db_upload non contiene il nome di un'altra variabile, è un riferimento a un oggetto di istruzione DOP.

Un'altra nota. La funzione rowCount() restituisce il numero di righe interessate dall'istruzione UPDATE; se l'istruzione UPDATE ha esito positivo, ma non vengono apportate modifiche effettive alla riga (poiché i valori assegnati alle colonne sono uguali a quelli già memorizzati nelle colonne), rowCount() restituirà 0.

(Per modificare tale comportamento , per fare in modo che restituisca il numero di righe corrispondenti, è possibile utilizzare PDO::MYSQL_ATTR_FOUND_ROWS).

+0

Grazie per avermi fatto consapevole di questo. Ora la query viene eseguita, tuttavia, viene visualizzato il messaggio: Impossibile caricare l'immagine del profilo. E il DB non è stato aggiornato. Come mai? – PhyCoMath

+1

La ragione più probabile è che 'rowCount()' restituisce 0. Probabilmente perché l'aggiornamento è riuscito, ma perché non è stata apportata alcuna modifica effettiva alla riga, perché i valori già memorizzati nella riga corrispondono ai valori assegnati. – spencer7593

+1

Tuttavia, non sono uguali. I valori non vengono aggiornati. Questa è la corrente: '../ images/blankprofilepic.png'. Quello che voglio ha URL: '../ images/profile-pictures/thumb_SOMETHING' – PhyCoMath

Problemi correlati