【问题标题】:SQLSTATE[42000] ErrorSQLSTATE[42000] 错误
【发布时间】:2017-08-11 04:40:03
【问题描述】:

我正在使用 PHP 数据对象 (PDO) 处理数据库,并且我使用 try-catch 块。我的 try 块中有以下代码

    $name=$email=$subject=$message="";
    if($_SERVER["REQUEST_METHOD"]=="POST"){
        $name = $_POST["name"];
        $email = $_POST["email"];
        $subject = $_POST["subject"];
        $message = $_POST["message"];
    }
            $servername = "//I have some IP Here";
            $username = "//somuser";
            $password = "//somepassword";
            $dbname = "lifeimpu_userrequest";
            $conn = new PDO("mysql:host=$servername;dbname=$lifeimpu_userrequest", $username, $password);
        // set the PDO error mode to exception
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "INSERT INTO ContactUs(name, email, subject, message) VALUES ($name, $email, $subject, $message);";
        $conn->exec(sql);
        echo "Data Submitted Successfully";

我不知道为什么我总是得到

SQLSTATE[42000]:语法错误或访问冲突:1064 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在第 1 行的“sql”附近​​使用正确的语法

在执行$conn->exec(sql);之后出现。执行直接跳转到catch块。

我尝试在 phpMyAdmin 中执行这些 SQL,并且运行良好。我不知道为什么它在代码中不起作用。

【问题讨论】:

  • $name, $email, $subject, $message 是字符串,字符串需要 ' 符号
  • 已经加了 ' ' 但还是不行
  • 试试$conn->query($sql);

标签: php database pdo


【解决方案1】:

你需要这样写你的查询,

$sql = "INSERT INTO `ContactUs` (`name`, `email`, `subject`, `message`) VALUES ('$name', '$email', '$subject', '$message')";

而你在

中错过了$

$conn->exec($sql);

【讨论】:

  • 我认为这应该会有所帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
  • 2010-11-12
  • 1970-01-01
相关资源
最近更新 更多