2013-04-14 44 views
0

的圖像讀取讀取二進制文件(影像)的內容爲$旗幟無法插入到MySQL表從關聯數組

$banner = addslashes (fread (fopen ($mysql_banner, "r"),filesize($mysql_banner)))

然後,您可以輕鬆地把它放在一個MySQL數據庫表。它工作完美。 但是,當你通過加載一個二進制文件(影像)的內容的關聯 陣列$最終從後來插入到數據庫做一個額外的步驟,會出現一個問題 - 你可以 不能將其插入數據庫表。 讓我們把同樣的內容爲關聯$最終

$final["banner"] = addslashes(fread(fopen($mysql_banner,"r"), filesize($mysql_banner)

,並分解成組件

while (list($name, $value) = each($final)) {** 
    $values_fields .= "$name, "; 
     $values .= "'$value', "; 
} 
$query1 = "INSERT INTO $banery ($values_fields) VALUES('$values')"; 
$res = mysql_db_query($db, $query1)** 

雖然原來的$旗幟及複印件變量$值(摘自關聯數組 $ final)具有相同的內容(圖像的二進制內容),只有原始的$ banner可插入數據庫。當我嘗試插入$值,顯示以下警告:「 - 不能插入到數據庫MySQL的插入 - 蹊蹺 ...。」(神祕的暗示) 爲什麼呢? enter code here

+0

[**請,不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

回答

1

你從未定義

$banery 

因此,你可以不插入到它。

你必須做一些像

INSERT INTO table_name (... 

但是,你正在做的

INSERT INTO $table_name (... 

沒有界定什麼$表名(在你的情況下,$ banery)是

+0

所有需要的變量都在腳本的其他地方定義,並且它們運行良好。問題在於從關聯$ final中檢索數據$值。我在那裏放了一個好工作$ final [「banner」]包含二進制字符串,並在$ final分解後返回$ value,它包含與存儲的原始字符串相同的二進制字符串,但可以插入它。這很奇怪,也許在「php應用衆所周知的語法」每個分解時都會丟失一些指針。 – user2279628

+0

對於所有玩家來說,我都會說簡化:我把硬幣放入盒子($ final),然後我回來(列表.. = ..等於)一枚看起來相同但硬幣不接受的硬幣。 – user2279628

+0

如果插入的值被精確地命名爲具體變量,那麼該腳本將執行非常好的插入。從相關的$ final中提取相同的值後,字段的名稱和值的名稱被推廣,我認爲這可能是從計算機的內存中讀取相同值不是100%相同的原因。 – user2279628