2014-05-08 110 views
1

我有我的小問題,通過PHP腳本插入.jpg圖像數據庫。數據庫連接工作正常,查詢工作在phpmyadmin,所以我認爲這個問題是在PHP代碼中。還有就是我的db表:由PHP插入JPEG到MySQL

CREATE TABLE images(
imageid INT(11) PRIMARY KEY AUTO_INCREMENT , 
noteid INT(11) NOT NULL , 
image LONGBLOB NOT NULL , 
FOREIGN KEY (noteid) REFERENCES notes(noteid) 
ON UPDATE CASCADE ON DELETE RESTRICT 
); 

而且有腳本測試:

// connecting to db 
$db = new DB_CONNECT(); 

$path = "uploads/1_image_003.jpg"; 
$noteid = 3; 
if(file_exists($path)) { 

    $handle = fopen($path, "rb"); 

    $image = fread($handle, filesize($path)); 

    fclose($handle); 

    $img = base64_encode($image); 

    $sql ="INSERT INTO images(noteid, image) VALUES('$noteid', '$img')"; 

    mysql_query($sql) or die('Bad Query'); 
    if (!mysql_query($sql)) { // Error handling 
     echo "Something went wrong! :("; 
    } 
} else { 
    echo "File not found\n"; 
} 

該腳本返回 「壞查詢」。你有什麼建議什麼是錯的,或者你可以指示我以另一種方式將.jpg圖像存儲到mysql?

+0

爲什麼你保存在你的數據庫的真實形象?您可以將圖像文件的名稱保存到您的數據庫中 –

+0

爲什麼要在數據庫中插入圖像?相反,你應該只在db中存儲文件路徑。 –

+1

避免mysql_ *函數...無論如何嘗試用mysql_error替換'錯誤的查詢'並查看您收到的錯誤mssg是什麼。 – Vagabond

回答

0

嘗試用file_get_contents()

$img =mysql_real_escape_string(file_get_contents($path)); 
$sql ="INSERT INTO images(noteid, image) VALUES('$noteid', '$img')"; 
mysql_query($sql) or die('Bad Query : '.mysql_error()); 

注:

  1. 您應該避免使用mysql_*功能,你應該使用mysqli_*PDO來代替。

  2. 不要將文件存儲到數據庫(除非它非常需要)。您可以將文件路徑存儲到數據庫。爲more..

-1

更換

mysql_query($sql) or die('Bad Query'); 
if (!mysql_query($sql)) { // Error handling 
    echo "Something went wrong! :("; 
} 

if (!mysql_query($sql)) { // Error handling 
    die('Bad Query' . mysql_error()); 
} 

,因爲它已經過時,您應該考慮使用MySQLiPDO_MySQL擴展,而不是mysql_query()

+0

它會顯示問題嗎? –

+0

只是嘗試一下 – anna

-1

我認爲你需要進一步調試這一點來確定問題。

你的代碼之前添加以下內容:

error_reporting(-1); 
ini_set('display_errors', 'On'); 

此外,如以下建議嘗試更換:

mysql_query($sql) or die('Bad Query'); 

隨着

mysql_query($sql) or die('Bad Query'. mysql_error());