【发布时间】: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);