【问题标题】:Empty MySQL query results from subdomain子域中的空 MySQL 查询结果
【发布时间】:2014-05-13 15:14:39
【问题描述】:

我有一个托管在 apache 服务器 (Plesk VPS) 上的网站(例如 site.com)。安装 phpMyAdmin 用于管理站点上的 MySQL 数据库。我使用 phpMyAdmin 中的“复制表”功能来复制现有表的结构和属性。我成功地将新数据导入到新表中。

我创建了一个新的子域 (xx.site.com) 并将其根目录分配给服务器上的 //httpdocs/new_site。复制现有的(工作的)php 脚本后查询旧表的数据

$fetch = mysql_query("SELECT * FROM tablename WHERE fieldname LIKE '$var' "); 
while ($row = mysql_fetch_row($fetch)) {
echo  "$row[0] $row[1] $row[2] $row[3] $row[4] $row[5]";
};

并将表名更改为新复制和填充的表,我得到一个空结果集。值得注意的是 php 脚本正常执行,没有错误,并且成功地将空结果集传回,这可以替换为 $var 的回显,建立查询不为空/空。

建立$var的代码是:

$var = $_GET['var']; //takes the pass from URL 


if (empty($var)) 
   die; 

我该如何解决这个问题?应该寻找什么线索?哪些信息可以确定问题所在?

【问题讨论】:

  • 在 phpMyAdmin 中运行查询是否得到结果?
  • 嗯... 不管是不是子域,你觉得跟MySQL有关系,而不是你访问脚本的方式吗?
  • 当查询没有提供您所期望的结果时,一个很好的起点是echo 查询,这样您就可以确切地查看发送到数据库的内容。在mysql_query 呼叫之前尝试echo "SELECT * FROM tablename WHERE fieldname LIKE '$var' "。通常,当您看到查询时,您会立即看到问题。
  • 您提到您使用 new 数据填充了表格 - 您的查询是否可能根本不匹配任何内容?也许一切都运行正常。
  • (顺便说一句:第一个问题不错!有足够的细节来获得一些关于尝试什么的建议。如果我能提出一个小问题,我建议尽快进入重点- 许多问题都添加了诸如“请保持友善”、“我是 X 的新手”等前言,它们并没有真正为问题添加任何内容。它们通常也会被编辑在这里编辑掉)。

标签: php mysql database subdomain


【解决方案1】:

我想你错过了%

将您的查询更改为此

SELECT * FROM tablename WHERE fieldname LIKE '$var%'

如果您将% 放在$var 的右侧,它将匹配从左到右的任何内容。

如果您将% 放在$var ('%$var') 的左侧,它将从fieldname 列的右到左匹配

当您使用LIKE 运算符时,您应该指明从哪里开始搜索。如果你想要完全匹配。这样做

SELECT * FROM tablename WHERE fieldname='$var'

编辑

按照 Fred -ii- 的建议,

SELECT * FROM tablename WHERE fieldname LIKE '". $var ."&'

SELECT * FROM tablename WHERE fieldname='". $var ."'

【讨论】:

  • 这取决于 OP 想要获得什么匹配。在开头和/或结尾带有% 或不带它。
  • All tr​​ue @Fred-ii-,但如果您使用 LIKE 运算符而不使用 %,则该精确值必须存在于表中,否则返回空数据集。恕我直言,使用LIKE 而不使用% 是不好的做法。这就是为什么我认为这是 OP 的失误,因为操作员 LIKE 会建议找到匹配的行 LIKE ...。此外,如果 OP 正在寻找匹配项,= 是正确的方法。
  • 谢谢,我按照建议添加了 %。没有变化。
  • 所以试试WHERE fieldname = '$var'@user3632998 或WHERE fieldname = '". $var ."'
猜你喜欢
  • 2023-04-09
  • 2021-04-29
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
  • 1970-01-01
相关资源
最近更新 更多