我一直在尝试将一些数据插入事件页面的数据库中。我有一个 html 表单和一个单独的脚本,如下所示,提交似乎通过了 ename
id
和 imgsrc
值,但什么也没有过去了。如果再多的话,我会收到一条 You have an error in your SQL Syntax;检查与您的 MySQL 服务器版本相对应的手册,了解在 'when、descr、positions) 附近使用的正确语法 VALUES (
test, 1 ,
www.vzdc.org,
2017-1-20 23:59:00' at line 1
我已经做了一些研究,但也许这只是我的一个奇怪的错误?我对 mysql 相当陌生,我希望得到一些帮助!谢谢,代码如下。
<!-- HTML form -->
<form id="newevent" action="insertevent.php" method="post">
<p>Event Name:</p><input name="ename" type="text" width="100">
<p>ID:</p><input name="id" type="text" size="5">
<p>Banner Link:</p><input name="imgsrc" type="text" size="50">
<p>Description</p><input name="descr" type="text" height="1000px" >
<p>Date / Time (yyyy-mm-dd HH:MM:SS):</p><input name="when" type="text">
<p>Positions (ONE per line)</p><textarea name="positions" form="newevent" rows="10" cols="50"></textarea><br>
<input value="Add Event" type="submit">
</form>
/* PHP script on insertevent.php */
<?php
$link = mysqli_connect("localhost", "root", "xxx", "xxx");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Escape user inputs for security
$ename = mysqli_real_escape_string($link, $_POST['ename']);
$id = mysqli_real_escape_string($link, $_POST['id']);
$imgsrc = mysqli_real_escape_string($link, $_POST['imgsrc']);
$when = mysqli_real_escape_string($link, $_POST['when']);
$descr = mysqli_real_escape_string($link, $_POST['descr']);
$positions = mysqli_real_escape_string($link, $_POST['positions']);
// attempt insert query execution
$sql = "INSERT INTO events (ename, id, imgsrc, when, descr, positions) VALUES (`$ename`, $id , `$imgsrc`, `$when`, `$descr`, `$positions`)";
if(mysqli_query($link, $sql)){
echo "Records added successfully.";
} else{
echo "ERROR: Could not execute $sql. " . mysqli_error($link);
}
// close connection
mysqli_close($link);
?>
最佳答案
不要使用反引号将变量绑定(bind)到查询,而是使用单引号。您可以对表名和列名使用反引号:
INSERT INTO `events` (`ename`, `id`, `imgsrc`, `when`, `descr`, `positions`)
VALUES ('$ename', '$id', '$imgsrc', '$when', '$descr', '$positions')
WHEN
也是一个保留字,最好改个名字。
由于您已经在使用 mysqli_*
API,请检查 prepared statement
关于php - 通过 HTML 表单插入数据的 SQL Near 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41540793/