PHP不会POST到MySQL数据库。

时间:2011-07-30 07:26:15

标签: php mysql post

我已经制作了一些PHP / HTML页面,以便于插入我的一个数据库。起初它似乎运行正常,但是一旦我尝试了更多测试,我意识到当我尝试在我的textarea中输入多行时(参见下面的代码),它将不会进入数据库。我不会收到任何错误,但它也不会保存在数据库中。我编辑的脚本也存在这个问题。如果我尝试编辑textarea,它不会更改数据库。

代码如下。

所有字段类型都是带有unicode的varchar,因此我可以输入非英文字符。 唯一不存在的是ID(bigint)和内容(longtext)允许大量信息(理论上,heh)。

这两个用于添加到数据库。我可能想出更新的一个,如果我知道一般的错误...这是我第一次实际使用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>

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

和@Dan Grossman一起去我的两分钱,你没有逃脱'和你的textarea有很多来自用户输入....使用mysql_error检查错误信息,如上所述使用真正的转义字符串或在我们的代码中添加了抽绳和条带......欢呼!!