2016-05-26 17 views
1

私はPHPイメージアップロードスクリプトを持っています。スクリプトのアップロード部分は機能していますが、画像の$ newnameをデータベースにアップロードしようとすると、データベースが機能しません。私は何かエラーや何かを得ることはありません。何もしていないだけです。ここでPHPアップロードスクリプトが投稿されていません

は私のスクリプトが

<?php 

//define a maxim size for the uploaded images in Kb 
define ("MAX_SIZE","100"); 

//This function reads the extension of the file. It is used to determine if the file is an image by checking the extension. 
function getExtension($str) { 
$i = strrpos($str,"."); 
if (!$i) { return ""; } 
$l = strlen($str) - $i; 
$ext = substr($str,$i+1,$l); 
return $ext; 
} 

//This variable is used as a flag. The value is initialized with 0 (meaning no error found) and it will be changed to 1 if an errro occures. If the error occures the file will not be uploaded. 
$errors=0; 

//checks if the form has been submitted 
if(isset($_POST['Submit'])) 
{ 

//reads the name of the file the user submitted for uploading 
$image=$_FILES['image']['name']; 

//if it is not empty 
if ($image) 
{ 

//get the original name of the file from the clients machine 
$filename = stripslashes($_FILES['image']['name']); 

//get the extension of the file in a lower case format 
$extension = getExtension($filename); 
$extension = strtolower($extension); 

//if it is not a known extension, we will suppose it is an error and will not upload the file, otherwize we will do more tests 
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) 
{ 

//print error message 
echo '<h1>Unknown extension!</h1>'; 
$errors=1; 
} 
else 
{ 

//get the size of the image in bytes 
//$_FILES['image']['tmp_name'] is the temporary filename of the file in which the uploaded file was stored on the server 
$size=filesize($_FILES['image']['tmp_name']); 

//compare the size with the maxim size we defined and print error if bigger 
if ($size > MAX_SIZE*1024) 
{ 
echo '<h1>You have exceeded the size limit!</h1>'; 
$errors=1; 
} 

//we will give an unique name, for example the time in unix time format 
$image_name=time().'.'.$extension; 

//the new name will be containing the full path where will be stored (images folder) 
$newname="images/".$image_name; 

//we verify if the image has been uploaded, and print error instead 
$copied = copy($_FILES['image']['tmp_name'], $newname); 
if (!$copied) 
{ 
echo '<h1>Copy unsuccessfull!</h1>'; 
$errors=1; 
}}}} 

//If no errors registred, print the success message 
if(isset($_POST['Submit']) && !$errors) 
{ 
echo "<h1>File Uploaded Successfully!</h1>"; 

session_start(); 

/* Attempt MySQL server connection. Assuming you are running MySQL 
server with default setting (user 'root' with no password) */ 
$link = mysqli_connect("localhost", "root", "", "db"); 

// Check connection 
if($link === false){ 
    die("ERROR: Could not connect. " . mysqli_connect_error()); 
} 

$sql = "UPDATE users SET logo='" . $newname . "' WHERE user_id='" . $_SESSION['USER_ID'] ."'"; 

// Close connection 
mysqli_close($link); 
} 

?> 

で誰かがこの問題を解決するために私を助けることができますか?

答えて

2

はまず、$sql = "UPDATE users SET...

のためにあなたが照会されません。

soooooooが...

$sql = mysqli_query($link, "UPDATE users SET ...");

とPHPとMySQLのエラーのため、セッション配列に値が、列がデータを保持するのに十分な長さであることないことを確認してください。

WHERE user_id=1";が機能する場合、セッション配列は空であり設定されませんでした。

ヘッダーの前に出力している可能性もありますので、スクリプトの先頭にsession_start();と入力してください。これはここで起こっていることです。あなたのコードは、セッションを開始するとすぐにブレーキをかけ、あなたに失敗しましたサイレントに

http://php.net/manual/en/mysqli.error.phpおよびhttp://php.net/manual/en/function.error-reporting.php のリンクを参照し、コードに適用してください。

+0

セッションを開始する前に 'echo''ing ;-) * boooooooooom * – Darren

関連する問題