我正在尝试将变量插入到我的数据库中的表中,并且由于某种原因,INSERT查询未将我的值插入到所述数据库中。我已经测试了“test_input”函数,它工作得很好,我知道连接正在工作,因为我稍后在代码中的SELECT查询正在工作。我也知道输入在$ _POST超全局中,所以我认为它可能与插入查询有关,排除了其他可能性。查询有什么问题吗?这是我的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>
答案 0 :(得分:1)
它不起作用,因为您创建的动态SQL插入语句将在VALUES
列表中包含不带引号的字符串,因此格式不正确。话虽如此,你真的不应该这样做,因为它容易受到一种名为SQL injection的非常常见的攻击。</ p>