3 回答

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
問(wèn)題
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','file_get_contents($tmp_image)')";
這將在PHP中創(chuàng)建一個(gè)名為的字符串$sql
。忘記MySQL一分鐘,因?yàn)槟氵€沒(méi)有執(zhí)行任何查詢(xún)。你只是在構(gòu)建一個(gè)字符串。
PHP的神奇之處在于你可以在雙引號(hào)內(nèi)寫(xiě)一個(gè)變量名 - 比方說(shuō)$this->image_id
- 變量仍然可以神奇地?cái)U(kuò)展。
函數(shù)調(diào)用不會(huì)發(fā)生此功能,稱(chēng)為“變量插值”。所以,你在這里所做的就是將字符串"file_get_contents($tmp_image)"
寫(xiě)入數(shù)據(jù)庫(kù)。
解決方案(1)
因此,要連接調(diào)用的結(jié)果file_get_contents($tmp_image)
,您必須跳出字符串并明確地執(zhí)行操作:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";
(你甚至可以從語(yǔ)法中看到它突出顯示它是如何工作的。)
解決方案(2)
現(xiàn)在您遇到的問(wèn)題是,如果二進(jìn)制數(shù)據(jù)包含任何二進(jìn)制數(shù)據(jù)'
,則查詢(xún)無(wú)效。因此,您應(yīng)該運(yùn)行它mysql_escape_string
以對(duì)查詢(xún)操作進(jìn)行清理:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
解決方案(3)
現(xiàn)在你有一個(gè)非常大的字符串,你的數(shù)據(jù)庫(kù)變得笨重。
不希望將圖像存儲(chǔ)在數(shù)據(jù)庫(kù)中,您可以在其中提供幫助。

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
要擴(kuò)展Tomalak的注釋?zhuān)荒茉谝?hào)內(nèi)運(yùn)行函數(shù)。
嘗試:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('{$this->image_id}','".file_get_contents($tmp_image)."')";

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
試試這個(gè):
$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);
添加回答
舉報(bào)