下面的代码给出了一个错误。单独的查询在 phpmyadmin 上直接工作正常,但在我的 php 代码中:
数据库错误 您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 line.. 但我不知道为什么?
<?php
$con = mysqli_connect("localhost","","","");
if (!$con)
{
echo" Not connected to database";
die('Could not connect: ' . mysqli_error());
}
if(isset($_POST['submit'])){
$username=$_SESSION["username"];
$sql = "INSERT INTO `dbase.mail`(`Date`, `to`, `message`, `from`) VALUES (CURDATE(),\'$_POST[username1]\',\'$_POST[message]\',\'$username\')";
$xy=mysqli_query($con,$sql);
if (!$xy)
{
die('Database Error ' . mysqli_error($con));
}
echo "Your message is stored";
}
最佳答案
几个问题:
数据库名和表必须分开分隔。
INSERT INTO `dbase`.`mail` -- RIGHT
不是这个:
INSERT INTO `dbase.mail` -- WRONG
您不需要在双引号字符串中反斜杠单引号。
$string = "that's the way"; -- RIGHT
不是这个:
$string = "that\'s the way"; -- WRONG
错误消息表明您使用的是单引号而不是反引号来分隔列。
INSERT INTO `dbase`.`mail`(`Date`, `to`, `message`, `from`) -- RIGHT
不是这个:
INSERT INTO 'dbase.mail'('Date', 'to', 'message', 'from') -- WRONG
您不得将 $_POST 变量直接插入到您的 SQL 中!这将使黑客很容易攻击您的网站。参见 What is SQL injection?和 How can I prevent SQL injection in PHP?
这不是您在此问题中询问的错误来源,但这是一种安全实践,您必须在将代码放到 Internet 上之前学习如何正确处理。如果您是电工,这类似于防止火灾的安全布线。
关于php - Mysql error.sql查询语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21355492/