2016-10-03 71 views
3

我想在PHP中創建個人資料頁面,我應該顯示登錄用戶的信息,包括用於此目的的個人資料照片。我想將上傳的圖像存儲在數據庫中。我寫了腳本,但它給了我SQL語句中的一些錯誤。圖像存儲在數據庫中使用PHP錯誤

我的PHP腳本

<?php 
include("configdb.php"); 
    function GetImageExtension($imagetype) 
    { 
     if(empty($imagetype)) return false; 
     switch($imagetype) 
     { 
      case 'image/bmp': return '.bmp'; 
      case 'image/gif': return '.gif'; 
      case 'image/jpeg': return '.jpg'; 
      case 'image/png': return '.png'; 
      default: return false; 
     } 
    } 
if (!empty($_FILES["uploadedimage"]["name"])) { 
    $file_name=$_FILES["uploadedimage"]["name"]; 
    $temp_name=$_FILES["uploadedimage"]["tmp_name"]; 
    $imgtype=$_FILES["uploadedimage"]["type"]; 
    $ext= GetImageExtension($imgtype); 
    $imagename=date("d-m-Y")."-".time().$ext; 
    $target_path = "../Photos/".$imagename; 
if(move_uploaded_file($temp_name, $target_path)) { 
    $query_upload="INSERT into 'images_tbl' ('images_path','submission_date') VALUES 
('".$target_path."','".date("Y-m-d")."')"; 
    mysql_query($query_upload) or die("error in $query_upload == ----> ".mysql_error()); 
}else{ 
    exit("Error While uploading image on the server"); 
} 
} 
?>; 

我得到了以下錯誤在INSERT

錯誤爲 'images_tbl'( 'images_path', 'submission_date')VALUES(」 ../Photos/03- 10-2016-1475478958.jpg','2016-10-03')== ---->你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以在''images_tbl'('images_path','submission_date')附近使用正確的語法VALUES('../Photos/03-10-2016-14'in line 1 * *

回答

2

你是混合的mysqli使用MySQL嘗試這樣

$query_upload="INSERT into images_tbl (`images_path`,`submission_date`) VALUES 
 
('".$target_path."','".date("Y-m-d")."')";  
 
mysqli_query($conn,$query_upload) or die("error in $query_upload == ----> ".mysqli_error($conn));

代替

$query_upload="INSERT into 'images_tbl' ('images_path','submission_date') VALUES 
 
('".$target_path."','".date("Y-m-d")."')"; 
 
    mysql_query($query_upload) or die("error in $query_upload == ----> ".mysql_error());

2

您正在使用周圍的表名引號和列,它應該是反引號,所以更改:

$query_upload="INSERT into 'images_tbl' ('images_path','submission_date') VALUES 
('".$target_path."','".date("Y-m-d")."')"; 

$query_upload="INSERT into `images_tbl` (`images_path`,`submission_date`) VALUES 
('".$target_path."','".date("Y-m-d")."')"; 

這就是說,代碼容易受到SQL注入並且您正在使用現在已棄用的obsolet功能 - 更改爲mysqliPDO並開始使用預準備語句。


當你的數據庫連接是mysqli你需要使用mysqli_query和其他相關功能,而不是將它們與老mysql功能混合。

$result=mysqli_query($conn, $query_upload) or die('error'); 
+0

爵士仍然有在INSERT誤差爲'images_tbl'('images_path','submission_date')VALUES(」 ../Photos/03-10-2016-1475479781.jpg','2016-10-03 ')== ---->沒有選擇數據庫 –

+0

您是否也可以共享'configdb.php'代碼 – RamRaider

+0

<?php \t \t $ servername =「localhost」; \t $ username =「root」; \t $ password =「」; \t $ dbname =「firstdb」; \t $ conn = mysqli_connect($ servername,$ username,$ password,$ dbname); ($ conn-> connect_error) \t如果($ conn-> connect_error) \t { \t die(「connection failed」。$ conn-> connect_error); \t} \t回聲「連接成功」; \t \t ?> –

1

您有錯誤在你的MySQL查詢,無需在查詢中使用使用singlequotes的表名BACKTICK

$query_upload="INSERT into `images_tbl` (`images_path`,`submission_date`) VALUES 
('".$target_path."','".date("Y-m-d")."')"; 

或沒有任何報價或反引號使用。

$query_upload="INSERT into images_tbl (`images_path`,`submission_date`) VALUES 
('".$target_path."','".date("Y-m-d")."')"; 
+0

仍然有錯誤INSERT到images_tbl('images_path','submission_date')VALUES(」 ../照片/ 03-10-2016-1475479848.jpg','2016-10-03')== ---->沒有選擇數據庫 –

+0

檢查你的configdb.php是否包含?或者您選擇了正確的數據庫? –

1

請嘗試以下查詢,我相信它會起作用。

$query_upload="INSERT INTO `images_tbl`(`images_path`, `submission_date`) VALUES ('".$target_path."','".date("Y-m-d")."')"; 

表和列的名稱不應被引號包圍。取而代之的是反向使用或不使用。

注:

mysql_*已廢棄。所以改爲使用mysqli_*PDO
Why shouldn't I use mysql_* functions in PHP?

+0

我已經申請,但之前得到Mysqli和Msql混合錯誤感謝任何方式現在解決 –

相關問題