继续得到语法错误(php / mysql)

时间:2017-03-24 01:58:59

标签: php mysql

PHP / MySQL的

我不断收到此错误:“您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在第1行使用”1“附近的正确语法。

我正努力让这个查询发生。它工作,它插入到mysql数据库,但每次都会出现此错误。我试图在同一行中使用所有内容,将双引号更改为单引号,删除所有在同一行中插入所有内容的空格,更改传递变量的方式({$ 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!";
    }

1 个答案:

答案 0 :(得分:2)

错误来自这一行:

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

$sql包含

的结果
$dbCon->query($add_query);

由于该查询成功,$sql包含TRUEmysqli_query()要求第二个参数为字符串,因此TRUE变为"1",因此您实际上是这样做的:

if (!mysqli_query($dbCon, "1")) {

这不是有效的查询,因此您会收到错误。

我认为你真正要做的是:

if (!$sql) {
    die('Error: ' . $dbCon->error);
} else {
    echo "dados atualizados!";
}

您无需反复拨打mysqli_query()

您还应学习使用预准备语句进行编码,而不是将变量替换为查询,以防止SQL注入。