2011-07-30 122 views
0

我已經做了一些PHP/HTML頁面,以方便插入到我的數據庫之一。起初,它似乎工作正常,但一旦我嘗試了更多,我意識到,當我嘗試在我的textarea中輸入多行(參見下面的代碼)時,它不會傳遞到數據庫。我不會收到任何錯誤,但它也不會保存在數據庫中。我所做的編輯腳本也存在這個問題。如果我嘗試編輯textarea,它不會更改數據庫。PHP不會POST到MySQL數據庫。

代碼如下。

所有字段類型都是使用unicode的varchar,所以我可以輸入非英文字符。 唯一不是ID(bigint)和內容(longtext)允許大量的信息(理論上,嘿)。

這兩個用於添加到數據庫。如果我知道一般情況有什麼問題,我大概可以找出更新的問題......這是我第一次深入地使用PHP和MySQL,所以我完全不知道它爲什麼不起作用。謝謝你的幫助!

characteradd.php

<html> 
<head> 
<title>Character Add</title> 
</head> 
<body> 
<div align="center"> 
<br> 
<font style="font-size: 50px;"><b>Character Add</b></font><br> 
Fill in everything with something.<br> 
<br> 
<form action="charinsert.php" method="post"> 
<table> 
<tr> 
<td>Name:</td><td><input type="text" name="name"><br></td> 
<td>Story:</td><td><input type="text" name="story"><br></td> 
</tr><tr> 
<td>Deity Group?</td><td><input type="text" name="deity"><br></td> 
<td>Country:</td><td><input type="text" name="country"><br></td> 
</tr><tr> 
<td>City:</td><td><input type="text" name="city"><br></td> 
<td>Gender:</td><td><input type="text" name="gender"><br></td> 
</tr><tr> 
<td>Orientation:</td><td><input type="text" name="orientation"><br></td> 
<td>Age:</td><td><input type="text" name="age"><br></td> 
</tr><tr> 
<td>Blood Type:</td><td><input type="text" name="blood"><br></td> 
<td>Occupation?</td><td><input type="text" name="occupation"><br></td> 
</tr><tr> 
<td>Height:</td><td><input type="text" name="height"><br></td> 
<td>Weight:</td><td><input type="text" name="weight"><br></td> 
</tr><tr> 
<td>Hair Color:</td><td><input type="text" name="hair"><br></td> 
<td>Eye Color:</td><td><input type="text" name="eye"><br></td> 
</tr> 
<td>Race:</td><td><input type="text" name="race"><br></td> 
<td>Pic Ref Preview:</td><td><input type="text" name="picpreview"><br></td> 
</tr><tr> 
<td>Pic Link:</td><td><input type="text" name="piclink"><br></td> 
<td>Relation Link:</td><td><input type="text" name="relationlink"><br></td> 
</tr><tr> 
<td>Pirate Stuff</td></tr><tr> 
<td>Allegiance:</td><td><input type="text" name="allegiance"><br></td> 
</tr><tr> 
<td>Future Stuff</td></tr><tr> 
<td>Element:</td><td><input type="text" name="element"><br></td> 
<td>Area:</td><td><input type="text" name="area"><br></td> 
</tr><tr><td>History:</td></tr><tr> 
<td colspan="4"><textarea cols="80" rows="15" name="content"> 
</textarea></td> 
</tr> 
</table> 
<input type="Submit"> 
</form> 
</div> 
</body> 
</html> 

charinsert.php

<html> 
<head> 
<title>Character Added!</title> 
</head> 
<body> 
<?php 
$username="username"; 
$password="pass"; 
$database="obviously"; 
$host="notthis"; 

$name=$_POST['name']; 
$story=$_POST['story']; 
$deity=$_POST['deity']; 
$country=$_POST['country']; 
$city=$_POST['city']; 
$gender=$_POST['gender']; 
$orientation=$_POST['orientation']; 
$age=$_POST['age']; 
$blood=$_POST['blood']; 
$occupation=$_POST['occupation']; 
$height=$_POST['height']; 
$weight=$_POST['weight']; 
$hair=$_POST['hair']; 
$eye=$_POST['eye']; 
$race=$_POST['race']; 
$picpreview=$_POST['picpreview']; 
$piclink=$_POST['piclink']; 
$rellink=$_POST['relationlink']; 
$allegiance=$_POST['allegiance']; 
$element=$_POST['element']; 
$area=$_POST['area']; 
$content=$_POST['content']; 


mysql_connect($host,$username,$password); 
@mysql_select_db($database) or die("Unable to select database"); 

$query = "INSERT INTO aliz_character VALUES ('','$story','$deity','$country','$city','$name','$gender','$orientation','$age','$blood','$occupation','$rellink','$height','$weight','$hair','$eye','$picpreview','$piclink','$allegiance','$element','$area','$race','$content')"; 
mysql_query($query); 

mysql_close(); 
?> 
<div align="center"> 
Return to <a href="dtop.php">updating page</a>. 
</div> 
</body> 
</html> 

回答

4

你不會逃避你的任何投入。任何人都可以在任何輸入中輸入內容以輕鬆打破查詢。試試在其中任何一個單引號標記'

該是學習PDO,準備好的語句和參數綁定的時候了。

如果您想按原樣使用此腳本,請將每個放入查詢的單個字符串調用mysql_real_escape_string

$content = mysql_real_escape_string($_POST['content']); 

Her daughter is named Help I'm trapped in a driver's license factory

+0

嗯,好的;我肯定會研究這一點,因爲知道更多關於PHP的知識總是非常有用,特別是如果我要使用它。 謝謝你的幫助! – Aska

0

要與@丹·格羅斯曼我的兩分錢,你也沒有逃脫「和烏爾textarea的有來自用戶輸入他們的一個很好的協議....使用mysql_error檢查錯誤消息和上面使用真正的逃逸字符串或addslashes和stripslashes代碼...乾杯!