亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用php在MySql數據庫中插入Blob

使用php在MySql數據庫中插入Blob

陪伴而非守候 2019-07-30 17:32:07
使用php在MySql數據庫中插入Blob我試圖將圖像存儲在DataBase中,由于某種原因它似乎不起作用。這是我桌子的結構。mysql> describe ImageStore;+---------+----------+------+-----+---------+-------+| Field   | Type     | Null | Key | Default | Extra |+---------+----------+------+-----+---------+-------+| ImageId | int(11)  | NO   | PRI | NULL    |       || Image   | longblob | NO   |     | NULL    |       |+---------+----------+------+-----+---------+-------+2 rows in set (0.01 sec)這是我的查詢插入圖像或至少這應該是什么://Store the binary image into the database                $tmp_img = $this->image['tmp_name'];                $sql = "INSERT INTO ImageStore(ImageId,Image)                               VALUES('$this->image_id','file_get_contents($tmp_image)')";                mysql_query($sql); 如果我打印file_get_contents($ tmp_image)的值,那么屏幕上會有大量數據。但是這個值并沒有存儲在數據庫中,這就是我所面臨的問題。
查看完整描述

3 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

問題

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','file_get_contents($tmp_image)')";

這將在PHP中創建一個名為的字符串$sql。忘記MySQL一分鐘,因為你還沒有執行任何查詢。你只是在構建一個字符串。

PHP的神奇之處在于你可以在雙引號寫一個變量名 - 比方說$this->image_id- 變量仍然可以神奇地擴展。

函數調用不會發生此功能,稱為“變量插值”。所以,你在這里所做的就是將字符串"file_get_contents($tmp_image)"寫入數據庫。


解決方案(1)

因此,要連接調用的結果file_get_contents($tmp_image),您必須跳出字符串并明確地執行操作:

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";

(你甚至可以從語法中看到它突出顯示它是如何工作的。)


解決方案(2)

現在您遇到的問題是,如果二進制數據包含任何二進制數據',則查詢無效。因此,您應該運行它mysql_escape_string以對查詢操作進行清理:

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";

解決方案(3)

現在你有一個非常大的字符串,你的數據庫變得笨重。

不希望將圖像存儲在數據庫中,您可以其中提供幫助。


查看完整回答
反對 回復 2019-07-30
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

要擴展Tomalak的注釋,您不能在引號內運行函數。

嘗試:

$sql = "INSERT INTO ImageStore(ImageId,Image)               
        VALUES('{$this->image_id}','".file_get_contents($tmp_image)."')";


查看完整回答
反對 回復 2019-07-30
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

試試這個:

$tmp_img = $this->image['tmp_name'];$sql = "INSERT INTO ImageStore(ImageId,Image)               
  VALUES('$this->image_id','" . addslashes(file_get_contents($tmp_image)) . "')";mysql_query($sql);


查看完整回答
反對 回復 2019-07-30
  • 3 回答
  • 0 關注
  • 1006 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號