【问题标题】:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法
【发布时间】:2014-10-06 01:07:21
【问题描述】:

srno 正在从文本框中成功获取

<?php
    $srno = $_POST['srno'];
    mysql_connect("localhost","root","");
    mysql_select_db("visit");
    $sql ="UPDATE visitor SET Exit='".$ab."' WHERE srno=$srno"; 
    mysql_query($sql) or die ("Error: ".mysql_error());
    ?>

【问题讨论】:

  • 你没有价值,$ab 很好。您在查询中使用的。 $srno,是字符串还是数字/整数??
  • $ab 是我能够成功获取的日期,$srno 是一个整数

标签: php mysql sql-update syntax-error mysql-error-1064


【解决方案1】:
  1. 如果$srno 是一个字符串,那么你在它周围缺少引号

  2. $ab 未定义

  3. Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDOMySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial

  4. 你也对SQL injections敞开心扉

【讨论】:

    【解决方案2】:

    进一步详述John (Conde's) answerexit是MySQL的保留字:

    要么将其重命名为其他名称,要么将其包装在反引号中:

    $sql ="UPDATE visitor SET `Exit`='".$ab."' WHERE srno=$srno";
                              ^    ^ backticks
    

    或者(如果$srno 是一个字符串,正如约翰在他的回答中所说)

    $sql ="UPDATE visitor SET `Exit`='".$ab."' WHERE srno='$srno'"; 
    

    您在mysql_query() 上使用了mysql_error(),这应该表示语法错误,您在问题中没有完全分享的内容,只是作为问题的标题,它没有向我们显示完整的错误消息,但是我确定它的效果是
    ...MySQL server version for the right syntax near 'Exit...


    error reporting 添加到文件顶部,这将有助于生产测试。

    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    

    这将对$ab 发出Undefined variable... 警告。

    【讨论】:

    • 感谢 Fred,正是在反引号的帮助下,查询才得以执行
    • @GauravGupta 如果可行,您应该接受他的回答。并且不要忘记检查链接。他在回答中给出了
    猜你喜欢
    • 1970-01-01
    • 2019-03-25
    • 2015-10-23
    • 1970-01-01
    • 2017-06-01
    • 2020-02-22
    • 2021-05-12
    • 2018-11-27
    相关资源
    最近更新 更多