php - Mysql error.sql查询语法错误

标签 php mysql

下面的代码给出了一个错误。单独的查询在 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/

相关文章:

javascript - 如何在 Laravel 的 cookie 中的表单步骤之间存储 Vue 状态?

php - 如何包含扩展接口(interface)的 php 类

php - fatal error :未捕获的异常 'Exception',消息为“DateTime::

javascript - 从所选菜单中选择 ID 后,在文本框中显示价格

javascript - 在输入文本表单旁边添加标签

php - Laravel 中同一模型的多个关系

mysql - 当我在两个表上执行 'select' 查询时,它会呈现表内的所有元素

带有自定义显示的 PHP/mysql 搜索

mysql - double not exists 子句是什么意思?

php - PHP 和 MySql 索引的最佳文本搜索逻辑