【问题标题】:sql UPDATE statement failing with SQL errorsql UPDATE 语句因 SQL 错误而失败
【发布时间】:2017-06-14 03:17:33
【问题描述】:

不断收到此警告:

警告:odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 查询表达式“WHERE id = 86”中的字符串语法错误,SQLExecDirect 中的 SQL 状态 37000

无论我如何编辑此 SQL UPDATE 命令:

$sqlU = "UPDATE inv20152016
        SET coNo = '$coNo', cusNo = '$cusNo', rcvTech = '$rcvTech', 
            rcvLoc = '$rcvLoc', rcvDate = '$rcvDate', rcyTech = '$rcyTech', 
            rcyLoc = '$rcyLoc', rcyDate = '$rcyDate', rtnTech = '$rtnTech', 
            rtnLoc = '$rtnLoc', rtnDate = '$rtnDate', cusInvNo = '$cusInvNo', 
            notes = '$notes
        WHERE id = '$rcyId'";
    if (!$rs=odbc_exec($conn,$sqlU)) {
        echo '<br />Error UPDATE\'ing new record: (' . $sqlU . ')<br />';
        goto end;
    } else {
        echo '<br />RECORD successfully UPDATE\'d in database.recycle20152016<br />'; //$sqlUpdate<br />;
        header('location: searchDb.php');
        exit();
    }

尝试提交 UPDATE 后,我在提交页面上返回以下内容:

更新新记录时出错:(UPDATE inv20152016 SET coNo = '658454', cusNo = '3282', rcvTech = 'Dave Phillips', rcvLoc = 'Sparington', rcvDate = '2016-11-15', rcyTech = 'Melo Hazak', rcyLoc = 'Wildmere', rcyDate = '2016-02-16', rtnTech = 'Dave Phillips', rtnLoc = 'Sparington', rtnDate = '2016-02-25', cusInvNo = '', notes = '其中 id = 86)

似乎所有 UPDATE 变量都符合预期,包括 WHERE 子句中的 id。我一直在使用 vars 之间的引用和间距而没有改变。我已验证 ACCESS 后端中的数据类型与推送更新的数据匹配。

任何想法为什么这个 UPDATE 语句可能不起作用?

【问题讨论】:

  • 如果能看懂代码,就可以调试代码了
  • 有趣的是,您的 WHERE 子句 id 值包含在引号中,但未包含在返回的 SQL 中。
  • 很明显这里notes = '$notes末尾缺少单引号

标签: php sql ms-access


【解决方案1】:

日期表达式必须用八字形包裹:

rcyDate = #2016/02/16#

【讨论】:

    【解决方案2】:

    您在notes = '$notes columnId var 中留下了一个单引号 '

    试试:

    $sqlU = "UPDATE inv20152016
            SET coNo = '$coNo', cusNo = '$cusNo', rcvTech = '$rcvTech', rcvLoc = '$rcvLoc', rcvDate = '$rcvDate', rcyTech = '$rcyTech', rcyLoc = '$rcyLoc', rcyDate = '$rcyDate', rtnTech = '$rtnTech', rtnLoc = '$rtnLoc', rtnDate = '$rtnDate', cusInvNo = '$cusInvNo', notes = '$notes'
            WHERE id = '$rcyId'";
        if (!$rs=odbc_exec($conn,$sqlU)) {
            echo '<br />Error UPDATE\'ing new record: (' . $sqlU . ')<br />';
            goto end;
        } else {
            echo '<br />RECORD successfully UPDATE\'d in database.recycle20152016<br />'; //$sqlUpdate<br />;
            header('location: searchDb.php');
            exit();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      • 2015-10-08
      • 2021-02-17
      • 2021-10-18
      • 2021-02-11
      相关资源
      最近更新 更多