通過網站上的兩個頁面,我不打算永遠離開家裏的電腦,我想用表單將項目輸入到我的計算機上託管的MySQL數據庫中。我之前已經完成了幾乎完全相同的工作,但由於某種原因,這個工作並不成功。我並不擔心這個或其他類似的安全問題,因爲它不會離開我自己的電腦,我只是希望它能夠真正起作用。將項目從表格插入到MySQL數據庫中
形式:
<form action='addclothes.php' method='post'><table style="font-family:verdana;font-size:14px;color:#004766;"><tr><td>
Type of clothing:</td><td><select name="type">
<option value="0">---</option>
<option value="dresses">Dress</option>
<option value="tops">Top</option>
<option value="bottoms">Bottom</option>
<option value="shoes">Shoes</option>
<option value="accessories">Accessory</option></select></td></tr>
<tr><td>Name:</td><td><input type="text" name="name"></td></tr>
<tr><td>Path to full image:</td><td><input type="text" name="largeimagepath"></td></tr>
<tr><td>Path to thumbnail:</td><td><input type="text" name="smallimagepath"></td></tr>
<tr><td colspan="2"><center><input type="submit" value="Submit" name="submit"></center></td></tr>
</table></form>
即發送到addclothes.php,它看起來像這樣,裝在HTML保持相同的佈局:
<?php
$name = $_POST['name'];
$table = $_POST['type'];
$largepath = $_POST['largeimagepath'];
$thumbpath = $_POST['smallimagepath'];
$db = mysql_connect("localhost", "root", "******") or die(mysql_error());
mysql_select_db("Default") or die(mysql_error());
$query = "INSERT INTO clothes."{$table}" (name, imagepath, thumbimagepath)
VALUES("{$name}", "{$largepath}", "{$thumbpath}")";
mysql_query($query) or die(mysql_error()); ?>
<p>Item Added!</p>
它涉及到下一個頁面,只是無論如何說「項目添加」。如果我在創建不顯示的變量之後嘗試回顯查詢。
您正在使用[an **過時的**數據庫API](http://stackoverflow.com/q/12859942/19068)並應使用[現代替換](http://php.net/manual/) EN/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻擊](http://bobby-tables.com/)**,現代的API會使[防禦]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己從。 – Quentin 2013-03-21 14:00:04
您的字符串連接中有語法錯誤,我希望這會導致PHP拋出一個分析錯誤。 (事實上,這並不重要,因爲根據我以前的評論,您應該從查詢構建中消除字符串連接。) – Quentin 2013-03-21 14:01:54