2013-01-15 97 views
0

我有一個表格,讓圖片的上傳。用戶可以根據單選按鈕選擇要上傳圖片的圖庫。

在上傳PHP腳本,將圖像上傳到一個目錄,然後再目錄位置添加到MySQL數據庫。上傳和目錄添加工作正常。

我想補充的是被壓到另一列的圖像數據庫,這樣我可以看到哪些圖像上傳到我的圖像是在一個單獨的表,畫廊的單選按鈕的名稱。

我的形式看起來像

<form enctype="multipart/form-data" action="upload-image.php" method="POST"> 
<h3>Select Gallery To Upload To</h3> 
<?php 
    $results = mysql_query("SELECT * FROM users"); 
    while ($row = mysql_fetch_assoc($results)) 
    { 
     echo'<br>'; 
     echo '<input type="radio" name="'. $row["username"].'"value="'.$row["username"].'">' . $row["username"]; 
    } 
?> 
<input type="hidden" name="MAX_FILE_SIZE" value="10000000" /> 
Choose a file to upload: <input name="uploadedfile" type="file" /><br /> 
<input type="submit" value="Upload File" /> 
</form> 

上傳腳本處理該加入到MySQL數據庫是如下部分:

mysql_query("INSERT INTO images (image, gallery_name) VALUES('".$target_path, $_POST["$row["name"]"]."')") 

這是給我的幾個錯誤: 公告:未定義索引:名稱

警告:mysql_query()期望參數2是資源,給出的字符串爲

我會如何解決這個問題?

+0

不要使用'mysql_ *'功能!他們正在[棄用](http://us3.php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated)。 – esqew

+1

打印$ _POST數組並查詢。值$ _POST [「$ row [」name「]」]在查詢中不可用。 – cartina

+0

請不要使用'mysql_ *'函數來編寫新的代碼。他們不再被維護,社區已經開始[棄用流程](http://goo.gl/q0gwD)。看到[紅色框](http://goo.gl/OWwr2)?相反,您應該瞭解[準備好的語句](http://goo.gl/orrj0)並使用[PDO](http://goo.gl/TD3xh)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定哪些,[這篇文章](http://goo.gl/YXyWL)會幫助你。如果你選擇PDO,[這裏是很好的教程](http://goo.gl/b2ATO)。另請參閱[爲什麼不應該在PHP中使用mysql函數?](http://goo.gl/J5jAo) – Daedalus

回答

2

你查詢的雙引號是有點歪。您還需要養活mysql_querymysql_connect創建資源(在下面的例子中,它是由$mysql表示)。

mysql_query("INSERT INTO images (image, gallery_name) VALUES('".$target_path."', '". $_POST[$row["name"]]."')", $mysql); 
+0

我只用它來查看數據庫中的項目,EG $ results = mysql_query(「SELECT * FROM users」); 所以我不是100%確定這裏實際發生的事情。 –

+0

@MichaelN特別令你困惑的是什麼? – esqew

+0

如果我說$ mysql(「INSERT INTO image etc」),那麼事後不需要做任何事情?我唯一一次使用這樣的東西是得到一行結果,然後將它回顯出來,所以在執行$ mysql(「SELECT * FROM users etc」)id然後echo $ mysql,以便完成變量。 我希望這是有道理的。 –

1

字符串是不concatnated(加入)正確。

變化

mysql_query("INSERT INTO images (image, gallery_name) VALUES('".$target_path, $_POST["$row["name"]"]."')") 

$row_data = $row["name"]; 
mysql_query("INSERT INTO images (image, gallery_name) VALUES('".$target_path."', '".$_POST[$row_data]."')"); 
+0

你幾乎在那裏,但不是很完美。 – Daedalus

+0

@Daedalus - 現在好了,對不起,我不是php編碼器! –

+0

嗯,這似乎給了我更多的錯誤。 EG_ results = mysql_query(「SELECT * FROM users」);注意:未定義的變量:行 注意:未定義的索引: –