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