您的 SQL 语法错误中有错误吗?

亚历山大·内德尔切夫

我有这个函数,其中包含一个非常简单的 SQL,它在语法中给出了不可能存在的错误。

function createPetition($conn, $pName, $pTarget, $pDescription, $userId) {
    $sql = "INSERT INTO petitions (petitionName, petitionTarget, petitionDescription, usersId) VALUES (?, ?, ?, ?);";
    //$sql2 = "INSERT INTO petitions (`petitionDate`) VALUES (NOW());";
    $stmt = mysqli_stmt_init($conn);
    if (!mysqli_stmt_prepare($stmt, $sql)) {
        header("location: ./index.php?error=stmtfailed");
        exit();
    }

    /*if (!mysqli_stmt_prepare($stmt, $sql2)) {
    header("location: ./index.php?error=stmtdatefailed");
    exit();
    }*/
    
    mysqli_stmt_bind_param($stmt, "ssss", $pName, $pTarget, $pDescription, $userId);

    if (!mysqli_query($conn, $sql)) {
        echo "Error description: " . mysqli_error($conn);
    } else {
        mysqli_stmt_execute($stmt);
        mysqli_stmt_close($stmt);
        header("location: ./petitionfinal.php?error=none");
        exit();
    }
}

结果是

错误描述:你的SQL语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的“?, ?, ?, ?)”附近使用的正确语法

当明显没有错误时。

达曼

问题是mysqli_query()你的代码中有一个流氓您需要将其删除。

你可能错过了它,因为你有太多的代码。你应该删除大部分。你真的不需要所有这些。

下面是代码的样子:

function createPetition(mysqli $conn, $pName, $pTarget, $pDescription, $userId) {
    $sql = "INSERT INTO petitions (petitionName, petitionTarget, petitionDescription, usersId) VALUES (?, ?, ?, ?);";
    
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssss", $pName, $pTarget, $pDescription, $userId);
    $stmt->execute();

    header("location: ./petitionfinal.php?error=none");
    exit();
}

但是,在函数内部进行重定向并不是一个好主意。我强烈建议将其从函数中移除。

function createPetition(mysqli $conn, $pName, $pTarget, $pDescription, $userId) {
    $sql = "INSERT INTO petitions (petitionName, petitionTarget, petitionDescription, usersId) VALUES (?, ?, ?, ?);";
    
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssss", $pName, $pTarget, $pDescription, $userId);
    $stmt->execute();
}

// when you call
createPetition($conn, $pName, $pTarget, $pDescription, $userId);

header("location: ./petitionfinal.php?error=none");
exit();

看看它有多漂亮。现在发现错误要容易得多。

如果您想知道错误怎么办,那么我必须向您指出如何获取实际的 mysql 错误并修复它?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MySQL错误1064:您的SQL语法有错误

SQL语法错误:“ com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;”

Hibernate和MYSQL:您的SQL语法有错误吗?

Hibernate和MYSQL:您的SQL语法有错误吗?

MySQL语法错误 您的SQL语法有误;

您的SQL语法中有错误-休眠和mysql

1064“您的SQL语法有错误; ...” Python MySQL

您的SQL语法EXTRACT中有错误

mysql error您的SQL语法有错误

您的SQL语法有错误(CREATE PROCEDURE)

mysql console> mysqlbinlog您的SQL语法有错误

奇怪的错误您的SQL语法有错误

无法更新数据:您的SQL语法有错误;

您的SQL语法C#.net上有错误

您的SQL语法有错误(连接正常)

显示#1064的mysql查询-您的SQL语法有错误;

#1064-您的SQL语法有错误

#1064-您的SQL语法有错误... FROM附近

MySQL说:文档(#1064)-您的SQL语法有错误;

Netbeans Java - 您的 sql 语法有错误

您的 SQL 语法有错误;靠近 'SET `points` = `points` + ?'

在更改表语法错误或访问冲突时:1064 您的 sql 语法有错误;

Hibernate:错误:您的 SQL 语法有错误

MySQL 语法错误 SQL 错误 [1064] [42000]:您的 SQL 语法有错误

MYSQL:您的 SQL 语法有错误

SQL 错误 :1064 您的 SQL 语法有错误

错误:“SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误。”。.env 或 PDO 中的问题?

错误更新记录 您的 SQL 语法有错误

ER_PARSE_ERROR:您的 SQL 语法有错误;