gpt4 book ai didi

PHP MySQL Web 服务器和 phpmyadmin 上的查询结果不同

转载 作者:行者123 更新时间:2023-11-29 06:56:14 27 4
gpt4 key购买 nike

我有一个看起来像这样的字段:

Intelligence: 0/75

我有一个表单,用户可以搜索这个字符串的值。在我的实时网络服务器上,这是查询:

SELECT * FROM `test` WHERE `id` IS NOT NULL AND `file` REGEXP CONCAT('Intelligence(: | : )([', :var2, '-9]|[0-9]{2,3})[ ]{0,1}/[ ]{0,1}([', :var2, '-9]|[0-9]{1,3})')
$var2 = $_POST['int'];
$stmt->bindValue(':var2', $var2);

:var2 是 $_POST 值。我一直在使用 4 的情况。这是插入 4 时的文字正则表达式:

Intelligence(: | : )([4-9]|[0-9]{2,3})[ ]{0,1}/[ ]{0,1}([4-9]|[0-9]{1,3})

因为我数据库中的字段是Intelligence: 0/75,所以这个查询应该不会产生任何结果。但它确实在我的实时网络服务器上。它返回字段 Intelligence: 0/75

如果我在 phpmyadmin 中运行这个 EXACT 查询,我不会得到任何结果。我已经在我的文本编辑器中排列了来自 phpmyadmin 和我的服务器的查询,它们是相同的。为了不让我发疯,这里是从 phpmyadmin 复制/粘贴的查询:

SELECT *
FROM `test`
WHERE `id` IS NOT NULL
AND `file`
REGEXP CONCAT( 'Intelligence(: | : )([4-9]|[0-9]{2,3})[ ]{0,1}/[ ]{0,1}([4-9]|[0-9]{1,3})' )

谁能明白为什么这会产生两个差异。结果?

更新:

我想我已经将范围缩小到 PHP。如果我将绑定(bind)到 :var2 的值更改为 like

$stmt->bindValue(':var2', '6284');

结果是一样的。返回所有具有 Intelligence: 0/75 的行。

如果我删除 bindValue 代码,则没有任何内容绑定(bind)到 :var2,结果仍然相同!

打印_r($stmt) =

SELECT * FROM `test` WHERE `id` IS NOT NULL AND `file` REGEXP
CONCAT('(INT:[ ]{1,2}([', :var2, '-9]|[0-9]{2,3})[ ]{1,2}/[ ]{1,2}([', :var2, '-9]|[0-9]{1,3})|Intelligence(: | : )([', :var2, '-9]|[0-9]{2,3})[ ]{0,1}/[ ]{0,1}([', :var2, '-9]|[0-9]{1,3}))')

最佳答案

挪威语,

当您说“在我的实时网络服务器上”时,您是指在由 PHP 或 SQL 命令行实用程序呈现的网页上吗?

sql 恶魔记录查询。您将能够比较执行了哪些确切 查询! log query (MySQL doc)

您似乎在文件列中有更多的数据单元。通常,尝试在每一列中包含一个数据单元,并尽可能遵守范式 (Database_normalization)。您将拥有更快、更简单的查询,无需正则表达式。但是,在您的情况下这可能是不可能的。

关于PHP MySQL Web 服务器和 phpmyadmin 上的查询结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12576055/

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