直升机。我无法执行以下INSERT INTO查询。 SELECT工作正常。错误在哪里?
php回复了这条错误消息:
错误:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在''id','reg_date','szoveg'附近使用正确的语法。)第1行的VALUES(NULL,CURDATE(),'x')'
$servername = "localhost";
$username = "root";
$password = "pass";
$dbname = "db";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM Notes");
$stmt->execute();
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
if(isset($_POST["szoveg"])){
$query = "INSERT INTO Notes ('id', 'reg_date', 'szoveg') VALUES (NULL, CURDATE(), '".$_POST["szoveg"]."')";
$stmt = $conn->prepare($query);
$stmt->execute();
}
答案 0 :(得分:-1)
不应引用您的表格列。
$query = "INSERT INTO Notes (id, reg_date, szoveg) VALUES (NULL, CURDATE(), '".$_POST["szoveg"]."')";
答案 1 :(得分:-1)
单引号('
)表示SQL中的sting文字。要引用标识符,例如列名,您应该使用简单的单词:
$query = "INSERT INTO Notes (id, reg_date, szoveg) VALUES (NULL, CURDATE(), '".$_POST["szoveg"]."')";
强制性评论:
使用字符串连接生成SQL语句会使您的代码容易受到SQL注入攻击。
您应该考虑使用prepareds statement代替。