Php 更新查询时SQL语法出错

Php 更新查询时SQL语法出错,php,mysql,Php,Mysql,我正在尝试更新数据库中的表。奇怪的是,它实际上是更新的,但我得到了一个错误 代码是: if ($this->id_member != null) { $sql = "UPDATE `tbl_member` SET `status` = 1 WHERE `id_member` = {$this->id_member};";

我正在尝试更新数据库中的表。奇怪的是,它实际上是更新的,但我得到了一个错误

代码是:

    if ($this->id_member != null) {
                $sql = "UPDATE `tbl_member`
                        SET `status` = 1
                        WHERE `id_member` = {$this->id_member};";
                // echo $sql;
                $result = $this->database->query($sql);
}
错误消息:

您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第3行的“”附近{“状态”:“成功”}

我尝试在我的列和表名上使用反斜杠,但仍然出现错误。我在这里检查了与此相关的stackoverflow问题,但没有一个可以解决我的问题。 谢谢

echo$sql的结果是

UPDATE `tbl_member`
                    SET `status` = 1
                    WHERE `id_member` = 96;{"status":"success"}
这方面的ajax方面是

function activateSubscriber() {
    $.ajax({
        url: "../../system/components/subscribers/controller/activate_subscriber.php",
        type: "POST",
        dataType: "json",
        data: $('#activate_subscriber_form').serialize(),
        success: function (data) {
            if (data.status == "success") {
                $('#activate_subscriber_modal').modal('hide');
                getMemberList();
                $.notify({
                    icon: 'glyphicon glyphicon-warning-sign',
                    title: 'Success',
                    message: 'Subscriber was successfully activated.',
                }, {
                    type: 'success'
                });
            } else {
                $.notify({
                    icon: 'glyphicon glyphicon-warning-sign',
                    title: 'Failed',
                    message: 'Subscriber was NOT successfully activated.',
                }, {
                    type: 'danger'
                });
            }
        }
    });
}
控制器是:

<?php

include('../../../config.php');
require('../../../classes/mysql.php');
include('../model/member.php');

$subscriber = new member($_POST['id_member'], $db_data);
$subscriber_result = $subscriber->activateSubscriber();
echo(json_encode($subscriber_result))

如果
status
为varchar,则将其值放在单引号中
'
试试这个:

$sql = "UPDATE `tbl_member`
                    SET `status` = '1'
                    WHERE `id_member` = {$this->id_member}";
尝试在ajax调用中添加(addasync:false)并检查

$.ajax({
        url: "../../system/components/subscribers/controller/activate_subscriber.php",
        type: "POST",
        async:false,
        ...
});

我终于解决了这个问题。这很有趣。在我的构造函数中,我有一个检索当前成员详细信息的函数。我的数据库中不再存在一个字段。它在试图检索while循环中不存在的字段的值时被卡住了


谢谢大家的帮助和帮助。我很感激

{$this->id_member};试着把它扔出去;哦,你是说<代码>其中id\u成员`={$this->id\u成员};“;`to WHERE
id\u member
={$this->id\u member}”;
status
字段的类型是什么?向我们显示
echo$sql
的结果我的坏@mith状态是tinyint
echo$sql
显示
{“status”:“success”}
和查询@PhpDev{“status”:“success”}是json响应OK。然后尝试$sql=“更新
tbl\u成员
设置
状态
=1,其中
id\u成员
={$this->id\u成员}”@phpdev您可以发布执行上述过程的ajax/javascript代码吗?您可以检查发布到“$\u post['id\u member']”的值是多少吗?它是成员id,是96。虽然这个代码片段是受欢迎的,并且可能提供一些帮助,但它将是如何以及为什么解决这个问题的。记住,你是在将来回答读者的问题,而不仅仅是现在提问的人!请在回答中添加解释,并说明适用的限制和假设。
  if ($this->id_member != null) {
            $sql = "UPDATE `tbl_member`
                    SET `status` = 1
                    WHERE `id_member` = ".$this->id_member;
            // echo $sql;
            $result = $this->database->query($sql); }
$.ajax({
        url: "../../system/components/subscribers/controller/activate_subscriber.php",
        type: "POST",
        async:false,
        ...
});