2011-06-16 30 views
1

有没有人碰巧知道为什么这个查询在phpMyAdmin中执行时给了我所需要的所有数据。查询在phpMyAdmin中运行良好,但0结果在PHP本身...?

但是,当在PHP中以编程方式执行时,它返回0行。

谢谢!

SELECT `table_schema`, `table_name` 
    FROM `information_schema`.`TABLES` 
    WHERE `Engine`='MyISAM' 
    AND `TABLE_SCHEMA` !='information_schema' 
    AND `TABLE_SCHEMA` !='mysql'; 

更新:

这里是问PHP代码。

$query = "SELECT `table_schema`, `table_name` 
    FROM `information_schema`.`TABLES` 
    WHERE `Engine`='MyISAM' AND `TABLE_SCHEMA` !='information_schema' AND `TABLE_SCHEMA` !='mysql'"; 
$result = mysql_query($query); 

echo '--:'.mysql_num_rows($result).':--'; 
while ($row = mysql_fetch_array($result)) { 
    print_r($row); 
} 

是的,我正在使用双引号...

+1

我们应该看到PHP代码。 – webbiedave 2011-06-16 18:36:27

+0

当在php中执行时,你是否使用双引号括起来,因为你内部有单引号 – mazlix 2011-06-16 18:36:49

+0

以同一用户登录? – 2011-06-16 18:39:04

回答

1

谢尔盖,

我也尝试过这样的事情,而且我注意到的是,phpMyAdmin的查询字符串不是用PHP查询字符串完全兼容。 phpmyadmin往往会为查询字符串添加一些额外的字符。

在你的PHP查询尝试类似:

SELECT table_schema, table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA <> 'information_schema' AND TABLE_SCHEMA <> 'mysql' 

祝你好运!

H

+0

谢谢,这是一个组合,这是一个许可问题 – Serhiy 2011-06-16 19:26:06

+0

@Serhiy,很高兴你明白了! – hypervisor666 2011-06-16 19:27:11

+0

ughhhh,是的,我忘记了不同的数据库使用“不是”操作符的不同符号。有时!=不起作用,而是<>。 – 2011-06-17 19:12:53

1

我们需要看到你的PHP代码来帮助你,给你更明确的答案,但是从SQL查询的外观,你可能会遇到反引号和单引号的问题。

尝试清除table_schema,table_name,information_schema,TABLES和所有后引号的所有后引号。

之后,围绕查询字符串使用双引号,但在...'information_schema ..',...'mysql'....和'MyISAM'周围留下单引号。 ..

让我们知道这是怎么回事,并发布您的实际PHP代码,以获得更好的帮助。

+0

只是做了...它非常相似... – Serhiy 2011-06-16 18:46:10

+0

如果这样做没有成功,你可以尝试用单引号替换反引号。我记得有一次类似的问题,但我忘记我是如何解决它的。希望有助于 – mazlix 2011-06-16 18:55:28

相关问题