【问题标题】:Error Manual for MySQL server version for the right syntax to use near '-1%'' LIMIT 18446744073709551615' at line 1MySQL 服务器版本的错误手册,在第 1 行的“-1%”附近使用正确的语法 LIMIT 18446744073709551615'
【发布时间】:2019-09-30 22:41:55
【问题描述】:

突然出现 SQL 语法错误:

突然出现SQL语法错误'你的SQL语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在第 1 行的 '-1%'' LIMIT 18446744073709551615' 附近使用正确的语法'

// begin Recordset
$suggestParam__colours = '-1';
if (isset($_GET['suggest1_choice'])) {
  $suggestParam__colours = $_GET['suggest1_choice'];
}
$query_colours = sprintf("SELECT colour_name FROM colours WHERE colour_name LIKE '%s'", GetSQLValueString($suggestParam__colours . "%", "text"));
$colours = $autocomplete->SelectLimit($query_colours) or die($autocomplete->ErrorMsg());
$totalRows_colours = $colours->RecordCount();
// end Recordset 

【问题讨论】:

  • 至少您需要告诉我们 a) $suggestParam__colours 的值,b) GetSQLValueString($suggestParam__colours . "%", "文本”)。 ALSO:看起来你正在使用 ADODb-php?
  • 您不应使用来自$_GET 或任何其他外部来源的内容,直接复制到您的 SQL 查询字符串中。您应该使用查询参数,它将内容作为参数组合在一起,没有语法错误的风险。见adodb.org/dokuwiki/doku.php?id=v5:reference:connection:prepare

标签: mysql syntax adodb-php


【解决方案1】:

这里是 selectLimit 的语法,基于 Github 的 adodb-php 源代码

SelectLimit($sql, $nrows = -1, $offset = -1, $inputarr = false, $secs = 0)

当你没有提供$nrows参数时,它会默认为-1,当参数为-1时,函数将分配18446744073709551615作为$nrows值(这是你不提供该参数时的默认值) .

18446744073709551615 是用于检索所有行的最大无符号 64 位整数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 2016-03-04
    • 2013-11-22
    • 1970-01-01
    相关资源
    最近更新 更多