我的 PHP 代码出现了一个奇怪的问题。这是我的代码。
$c=mysqli_connect('localhost','root','*************');
$a=0;
if($b=mysqli_num_rows(mysqli_query($c,$z="SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = 'wallets' AND `TABLE_NAME` = '".$_SESSION['uname']."'"))!=0)
{
print("<b>Wallet found</b>$b - $z");
$a=1;
}
if(!$a)
{
print("<b>No accounts found :(</b>");
}
?>
这段代码返回这个
Wallet found1 - SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = 'wallets' AND `TABLE_NAME` = 'ShadowRi5ing'
它应该返回这个
No accounts found :(
我在 PhpMyAdmin 中输入了相同的查询,它返回了这个
COUNT(*)
0
请帮我修复php代码!谢谢:)
编辑:通过这样做解决了问题...
$q=mysqli_query($c,$z="SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = 'wallets' AND `TABLE_NAME` = '".$_SESSION['uname']."'");
$row=mysqli_fetch_array($q);
if($row['COUNT(*)'])
{
print("<b>Wallet found</b> {$row['COUNT(*)']} - $z - $a");
$a=1;
}
最佳答案
您的查询正在检查返回的行数。当您选择没有聚合的 count(*)
时,您将始终获得一行。该行的值可能是 0
,但您会得到一行。
您应该检查返回值。或者删除 count()
并从找到的每一行中返回值。
我的建议是将查询更改为:
SELECT 1
FROM `information_schema`.`TABLES`
WHERE `TABLE_SCHEMA` = 'wallets' AND `TABLE_NAME` = '".$_SESSION['uname']."'
LIMIT 1;
如果找到任何内容,您将返回 1 行。如果没有,您现有的逻辑将起作用。
关于PHP 或 SQL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21592098/