gpt4 book ai didi

phpmyAdmin 显示行,MySQL 语句不显示?

转载 作者:行者123 更新时间:2023-11-29 08:14:00 25 4
gpt4 key购买 nike

编辑根据要求提供的是日期列的外观:2014 年 1 月 15 日2014 年 1 月 16 日2014年8月10日

所以我想要实现的目标是提取包含 2014 年 1 月的每一行,这样我就可以获得该年该月的每一行。

这是我生成查询的 PHP 代码:

    $monthYearString = $month . "%" . $year;
$query_current = "SELECT * FROM {$table_omsaetning} WHERE 'Date' LIKE " . "'{$monthYearString}'";
echo $query_current;

回显给了我这个查询:SELECT * FROM table_name_here WHERE 'Date' LIKE 'Jan%2014'

原始问题

我这里有一个非常奇怪的问题。如果我使用我的托管站点提供的 phpAdmin 执行搜索,并搜索类似于特定日期的行,它会生成此 SQL 语句,并找到 3 行:

SELECT * 
FROM `table_name`
WHERE `Date` LIKE 'Jan%2014'

但是,当我尝试使用 phpAdmin 中的 SQL 语句或我自己的代码执行相同的操作时,它什么也没有显示?怎么会?这是100%相同的说法。真的不明白我如何使用内置的 phpAdmin 函数进行搜索,然后它生成该 SQL 语句,然后当我尝试自己注入(inject)它时,它只返回 0 行而不是 3 行。

希望这是有道理的。

最佳答案

单引号和反引号之间的区别在这里很重要。您引用了列名称,而不是使用反引号。应该是:

SELECT * FROM table_name_here WHERE `Date` LIKE 'Jan%2014'

反引号字符(请参阅上面查询中的Date 列)允许您指示它是名称而不是字符串。在这种情况下,如果您没有这些,则会收到错误,因为 Date 是保留字。反引号允许您使用表名和列名的保留字。

单引号表示它是一个字符串。在您的查询中,您实际上是在搜索字符串 'Date' 包含字符串 'January 2014' 的任何记录,这是不可能的,并且始终会返回零结果。

有关更多信息,请查看这个问题:When to use single quotes, double quotes, and backticks in MySQL

您的代码应如下所示:

$monthYearString = $month . "%" . $year;
$query_current = "SELECT * FROM {$table_omsaetning} WHERE `Date` LIKE '{$monthYearString}'";
echo $query_current;

关于phpmyAdmin 显示行,MySQL 语句不显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20975770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com