首页 文章

如何插入数据库(语法错误)[重复]

提问于
浏览
0

这个问题在这里已有答案:

直升机 . 我无法执行以下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();

}

2 回答

  • -1

    单引号( ' )表示SQL中的sting文字 . 要引用标识符,例如列名,您应该使用简单的单词:

    $query = "INSERT INTO Notes (id, reg_date, szoveg) VALUES (NULL, CURDATE(), '".$_POST["szoveg"]."')";
    

    强制性评论:
    使用字符串连接生成SQL语句会使您的代码容易受到SQL注入攻击 . 您应该考虑使用prepareds statement .

  • -1

    不应引用您的表格列 .

    $query = "INSERT INTO Notes (id, reg_date, szoveg) VALUES (NULL, CURDATE(), '".$_POST["szoveg"]."')";
    

相关问题