Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 子域中的空MySQL查询结果_Php_Mysql_Database_Subdomain - Fatal编程技术网

Php 子域中的空MySQL查询结果

Php 子域中的空MySQL查询结果,php,mysql,database,subdomain,Php,Mysql,Database,Subdomain,我有一个网站(例如site.com)托管在apache服务器(Plesk VPS)上。安装phpMyAdmin是为了管理站点上的MySQL数据库。我在phpMyAdmin中使用了“copytable”函数来复制现有表的结构和属性。我成功地将新数据导入到新表中 我创建了一个新的子域(xx.site.com),并将其根目录分配给服务器上的//httpdocs/new_site。复制查询旧表数据的现有(工作)php脚本后 $fetch = mysql_query("SELECT * FROM tabl

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

我创建了一个新的子域(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的回显,从而确定查询不是空的/null

建立$var的代码是:

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


if (empty($var)) 
   die; 

如何对此进行故障排除?我们应该寻找什么线索?什么信息可以确定问题所在?

我认为您遗漏了一个
%

将您的查询更改为此

SELECT * FROM tablename WHERE fieldname LIKE '$var%'
如果将
%
放在
$var
的右侧,它将从左到右匹配任何内容

如果将
%
放在
$var
'%$var'
)的左侧,它将从列
字段名的右侧到左侧匹配

当您使用
LIKE
操作符时,您应该指示从何处开始搜索。如果你想要精确匹配。你喜欢这样吗

SELECT * FROM tablename WHERE fieldname='$var'
编辑

正如弗雷德-ii-所建议的

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


在phpMyAdmin中运行查询时是否会得到结果?嗯。。。无论它是否是子域,您认为它与MySQL有关,而不是与您访问脚本的方式有关吗?当查询没有提供您所期望的内容时,一个很好的起点是
echo
查询,以便您可以准确地看到发送到数据库的内容。在调用
mysql\u查询
之前,尝试
echo“从tablename中选择*,其中字段名类似“$var”
。通常,当您看到查询时,您会立即看到问题。您提到您用新数据填充了表-您的查询是否可能根本不匹配任何内容?也许一切都正常。(旁白:这是一个不错的第一个问题!有足够的细节可以让你选择要尝试的建议。如果我能提供一个小的狡辩,我建议你尽快切入要点-许多问题都会添加序言,如“请友善”、“我对X不熟悉”等,它们实际上并没有给问题添加任何内容。它们通常会被编辑掉。)
%
是可选的,这取决于匹配的内容OP希望得到。在开始和/或结束处有一个
%
,或者没有它。全部为true@Fred ii-,但是如果您在没有
%
的情况下使用
LIKE
操作符,那么表中必须存在该精确值,否则返回空数据集。IMHO,在没有
%
的情况下使用
LIKE
操作符是不好的做法。T这就是为什么我认为OP没有找到匹配的行的原因,因为opreator-LIKE建议查找匹配的行,例如……此外,如果OP正在查找匹配,则
=
是正确的方法。谢谢,我按照建议添加了%。没有更改。因此请尝试
WHERE fieldname='$var'
@user3632998或
WHERE fieldname='$var'
SELECT * FROM tablename WHERE fieldname='". $var ."'