1
我试图插入变量到我的数据库中的表中,由于某种原因,INSERT查询没有插入我的值到数据库中。我已经测试了“test_input”函数,它工作正常,并且我知道连接正在工作,因为稍后在代码中的SELECT查询正在工作。我也知道输入是在$ _POST superglobal中,所以我认为它可能与插入查询有关,通过排除其他可能性。查询有什么问题吗?这里是我的php代码:
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$name = test_input($_POST['name']);
$date = test_input($_POST['date']);
$datestring = date('Y-m-d',strtotime(test_input($_POST['date'])));
$venue = test_input($_POST['venue']);
$town = test_input($_POST['town']);
$connection = new mysqli("Example","Example","Example","Example");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if($_POST != []) {
$connection->query("INSERT INTO events (Name, Date, Venue, Town) VALUES(" . $name . ", " . $datestring . ", " . $venue . ", " . $town . ")");
}
这是我的HTML表单代码,如果有什么错误的。
<div class="tr" id="addevent">
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<div class="td">
<input type="text" name="name">
</div>
<div class="td">
<input type="text" name="date">
</div>
<div class="td">
<input type="text" name="venue">
</div>
<div class="td">
<input type="text" name="town">
</div>
<div class="td">
<input type="submit" value="Add Event">
</div>
</form>
</div>
你可能想检查你的条件'$ _POST!= []'。也许你可以测试'isset($ _ POST ['name'])'。或者任何其他必须存在的表单参数。在if语句中尝试echo并查看它是否被执行。 – 2014-11-21 23:21:46
请删除'$ _SERVER ['PHP_SELF']'作为你的动作。我知道你有'htmlspecialchars()',但其中任何一个就像黑客天堂。在这里查看更多信息 - https://phpsecurity.wordpress.com/2007/11/03/the-danger-of-php_self/以及为什么htmlspecialchars本身就是一个问题 - http://blog.astrumfutura.com/2012/03/A-旅行者引导到跨站点脚本-XSS-在-PHP-部分-1-如何-未使用的-用htmlspecialchars换输出转义/ – DrRoach 2014-11-21 23:24:44