不断出现语法错误(php/mysql)

不断出现语法错误(php/mysql),php,mysql,Php,Mysql,php/mysql 我经常遇到这样的错误:“您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以了解第1行“1”附近使用的正确语法” 我正在努力让这个问题发生。它可以工作,可以插入mysql数据库,但是每次都会出现这个错误。我尝试使用同一行中的所有内容,将双引号改为单引号,删除所有插入samen行中所有内容的空格,更改将变量({$variable}传递到“.$variable.”的方式,以及其他所有内容。我已经看到了一些与此相关的stackoverflow问题,但有不同的解决方

php/mysql

我经常遇到这样的错误:“您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以了解第1行“1”附近使用的正确语法”

我正在努力让这个问题发生。它可以工作,可以插入mysql数据库,但是每次都会出现这个错误。我尝试使用同一行中的所有内容,将双引号改为单引号,删除所有插入samen行中所有内容的空格,更改将变量({$variable}传递到“.$variable.”的方式,以及其他所有内容。我已经看到了一些与此相关的stackoverflow问题,但有不同的解决方案。 我知道我们不能在数字字段中传递“”

我想我现在别无选择了。需要帮助! 此错误持续显示,但数据已正确插入到我的表中

代码如下:

$user_id = get_current_user_id();
$prescription_name = $_POST['prescription_name'];
$date_created = date('Y-m-d');
$last_updated = date('Y-m-d');
$right_eye_sphere = $_POST['right_eye_sphere'];
$left_eye_sphere = $_POST['left_eye_sphere'];
$right_eye_cylinder = $_POST['right_eye_cylinder'];
$left_eye_cylinder = $_POST['left_eye_cylinder'];
$right_eye_axis = $_POST['right_eye_axis'];
$left_eye_axis = $_POST['left_eye_axis'];
$pd = $_POST['pd'];
$date_of_birth = $_POST['date_of_birth'];
$file_path = $_POST['file_path'];

$add_query = "INSERT INTO wew_prescription (
        prescription_id,
        user_id,
        prescription_name,
        date_created,
        last_updated,
        right_eye_sphere,
        left_eye_sphere,
        right_eye_cylinder,
        left_eye_cylinder,
        right_eye_axis,
        left_eye_axis,
        pd,
        date_of_birth,
        file_path
        ) Values (
        NULL,
        {$user_id},
        '{$prescription_name}',
        '{$date_created}',
        '{$last_updated}',
        '{$right_eye_sphere}',
        '{$left_eye_sphere}',
        '{$right_eye_cylinder}',
        '{$left_eye_cylinder}',
        '{$right_eye_axis}',
        '{$left_eye_axis}',
        '{$pd}',
        '{$date_of_birth}',
        '{$file_path}'
        )";

    $sql = $dbCon->query($add_query);

    if (!mysqli_query($dbCon,$sql)){
        die('Error: ' . mysqli_error($dbCon));
    }else{
        mysqli_query($dbCon,$sql);
        echo "dados atualizados!";
    }

错误来自此行:

if (!mysqli_query($dbCon,$sql)){
$sql
包含

$dbCon->query($add_query);
由于该查询成功,
$sql
包含
TRUE
mysqli_query()
要求第二个参数为字符串,因此
TRUE
变为
“1”
,因此您实际上在执行以下操作:

if (!mysqli_query($dbCon, "1")) {
这不是一个有效的查询,因此您会得到一个错误

我想你真正想做的是:

if (!$sql) {
    die('Error: ' . $dbCon->error);
} else {
    echo "dados atualizados!";
}
您不需要反复调用
mysqli\u query()


您还应该学会使用预先准备好的语句编写代码,而不是将变量替换到查询中,以防止SQL注入。

您的脚本甚至有可能会看到在使用时发生了什么。混合使用面向对象的函数调用
$con->query($SQL)
和过程函数调用
mysqli\u query是不常见的($con,$sql)
。将查询执行的结果分配给名为
$sql
的变量也有点奇怪。它只是一个变量名,可以是任何名称。但是如果我要将某个内容分配给名为
$sql
的变量,它将是sql文本,字符串值被分配给
$add\u query
。正如Barmar所说,code正在执行字符串
“1”
。谢谢大家!我将查看准备好的参数化语句!我是学习mysqlThank you Barmar的前端开发人员!我被卡住了,只想着查询,而不是下面的if!我会稍微修改代码,只是将执行赋值的一行更改为
$sql
…使其可读“
$sql=$add\u query;
”。这可能是错误的,因为它将在
if
中调用
mysqli\u query()
两次。