我有一个php语句,可以在我的mySQL数据库中插入一些信息。连接完美。我遇到的问题是我收到以下错误代码:
错误:INSERT INTO任务(' taskName',' requestedBy',' details', ' dateAdded')VALUES(' test1',' test3',' test3',2015-01-05')你有 SQL语法中的错误;查看与您的手册相对应的手册 MySQL服务器版本,用于在' taskName'附近使用正确的语法, ' requestedBy','详细信息',' dateAdded')VALUES(' test1',' test3',' ; TE' 在第1行
功能如下
if(isset($_POST["submitTask"])){
insertTask();
};
function insertTask(){
$servername = "localhost";
$username = "tasktrack";
$password = "";
$dbname = "tasktrack";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$taskname = $_POST["task_name"];
$requestedby= $_POST["requested_by"];
$details = $_POST["details"];
$datenow = date("Y-m-d");
$sql = "INSERT INTO tasks ('taskName', 'requestedBy', 'details', 'dateAdded') VALUES ('$taskname' ,'$requestedby' ,'$details', $datenow')";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
};
我已尝试使用$sql
行的多种不同解决方案,如下所示
$sql = "INSERT INTO tasks ('taskName', 'requestedBy', 'details', 'dateAdded') VALUES ('$taskname' ,'$requestedby' ,'$details', $datenow')";
$sql = "INSERT INTO tasks (taskName, requestedBy, details, dateAdded) VALUES ($taskname ,$requestedb ,$details, $datenow)";
$sql = "INSERT INTO tasks (`taskName`, `requestedBy`, `details`, `dateAdded`) VALUES (`$taskname` ,`$requestedb` ,`$details`, `$datenow`)";
现在我陷入了困境,无法想到更多的事情要尝试。
答案 0 :(得分:2)
$sql = "INSERT INTO tasks (taskName, requestedBy, details, dateAdded) VALUES ('$taskname' ,'$requestedby' ,'$details', '$datenow')";
// Removed quotes from columns, and added missing quote on datenow
请注意,这种将值添加到数据库中的技术非常不安全,并且容易受到SQL注入攻击。
答案 1 :(得分:0)
您不得将字段名称括在撇号或引号中。将它们用引号(`)括起来或按原样使用它们。
$sql = "INSERT INTO tasks (`taskName`, `requestedBy`, `details`, `dateAdded`) VALUES ('$taskname' ,'$requestedby' ,'$details', '$datenow')";
或
$sql = "INSERT INTO tasks (taskName, requestedBy, details, dateAdded) VALUES ('$taskname' ,'$requestedby' ,'$details', '$datenow')";
但是,如果字段名称是MySQL关键字,或者它包含空格,引号,逗号,括号,运算符或其他在SQL中具有特殊含义的字符,则必须将它们括在后引号中,否则MySQL将报告语法特殊字符的错误。