2012-11-04 105 views
0

棘手的問題,但基本上我有一個帶有「標題」,「消息」和「圖像」框的web表單,它們都可以上傳到一個表上的MySQL。

我想要做的是在我的表單中有另一個字段,我希望它發佈到哪裏,目前我有2個頁面和2個表格。表博客和表Blog_2 他們,如果我改變我的insert.php插入到博客或Blog_2

但我希望能夠使用外地工作和鏈接到一個字段的形式$_POST[Blog] 功能,它將有一個下拉框來選擇Blog或Blog_2

下面是我的代碼。我放棄了它,但我似乎無法使它工作。 我創建了一個名爲$ insert的變量,如您所見。

也許它只是一個語法問題,但即時通訊不是PHP的頭腦。

<?php 
$con = mysql_connect("xxx","xxx","xxx"); 
mysql_select_db("databse") or die(mysql_error()); 

$insert = '$_POST[Blog]'; 

mysql_query("INSERT INTO $insert 
(Date, Title, Message, Image) 
VALUES(now(), '$_POST[Title]' , '$_POST[Message]' , '$_POST[Image]') ") 
or die(mysql_error()); 

echo "1 record added"; 


mysql_close($con); 
?> 
+1

如果這是新的代碼,考慮移動到[mysqli的](http://www.php.net/manual/en/book.mysqli.php)或[PDO](HTTP: //www.php.net/manual/en/ref.pdo-mysql.php)而不是原來的[mysql](http://www.php.net/manual/en/intro.mysql.php)界面。 –

+0

這是一個語法問題:'$ insert ='$ _POST [Blog]';'。如果你輸出你的SQL字符串(它要求你先創建它),那麼你就知道了。在任何情況下,你都沒有發佈mysql錯誤消息,這不是建設性的。 – hakre

+0

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護,[棄用過程](http://j.mp/Rj2iVR)已經開始。看到[**紅框**](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

嘗試如下

$insert = mysql_real_escape_string($_POST['Blog']); 

mysql_query("INSERT INTO ".$insert." 
(Date, Title, Message, Image) 
VALUES(now(), '$_POST[Title]' , '$_POST[Message]' , '$_POST[Image]') ") 
or die(mysql_error()); 

建議:

1.Learn從MySQL注射預防:不建議用於編寫新的代碼Good Link

2.Mysql擴展。相反,應該使用mysqli或PDO_MySQL擴展。更多的閱讀:PHP Manual

+0

哇,謝謝你的迅速回應,實現夢想。 – Blackline

+2

甜夢有時會變成噩夢*快*。 – hakre

+1

另外,@Blackline如果這個答案適合你,考慮接受它,這將有利於你,以及回答的人。祝你好運! –

0
$insert = $_POST['Blog']; 
function clean($text) { 
$text = str_replace("'", "\'", $text); 
return $text; 
} 
mysql_query("INSERT INTO ".$insert." 
(`Date`, `Title`, `Message`, `Image`) 
VALUES(now(), '".clean($_POST['Title'])."' , '".clean($_POST['Message]'])."' , '".clean($_POST['Image]'])."') ") 
or die(mysql_error()); 
+1

你可以使用[mysql_real_escape_string](http://php.net/manual/en/function.mysql-real-escape-string.php)而不是clean。 –

+0

我現在:)但這個函數只替換「'」 – Eugen

+0

這就是爲什麼你應該考慮'mysql_real_escape_string'。還有其他角色可以逃脫。如果他的帖子的信息包含新行? ('\ n'或'\ n \ r') –