繁体   English   中英

SQL返回错误的行数

[英]SQL returns wrong number of rows

我有一个SQL脚本,该脚本应该计算表中的行数。 该脚本运行良好,能够看到我在8个表中各有25行。 问题是,当我将一个csv导入到一个表中以添加更多值然后运行脚本时,它仍然说每个表中有25行。 然后,我删除了另一个表中的所有行,结果仍然返回25。

我没有在脚本的任何位置手动设置值,这是整个脚本,无论我对表做什么,它都将返回25的所有值。 我不知道如何调试它,除非phpMyAdmin / MAMP有问题?

<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbName = "database";

$var1 = 't1c';
$var2 = 't1c';
$var3 = 't1c';
$var4 = 't1c';
$var5 = 't2c';
$var6 = 't2c';
$var7 = 't2c';
$var8 = 't2c';

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
error_reporting(E_ALL);
ini_set('display_errors', 1);


$conn = new mysqli ($servername, $username, $password, $dbName);

if(!$conn){
    die("Connection failed. ". mysqli_connect_error());
}

$sql = "SELECT ";
$sql .= "(SELECT COUNT(*) FROM table1) AS $var1, ";
$sql .= "(SELECT COUNT(*) FROM table2) AS $var2, ";
$sql .= "(SELECT COUNT(*) FROM table3) AS $var3, ";
$sql .= "(SELECT COUNT(*) FROM table4) AS $var4, ";
$sql .= "(SELECT COUNT(*) FROM table5) AS $var5, ";
$sql .= "(SELECT COUNT(*) FROM table6) AS $var6, ";
$sql .= "(SELECT COUNT(*) FROM table7) AS $var7, ";
$sql .= "(SELECT COUNT(*) FROM table8) AS $var8; ";

$result = mysqli_query($conn ,$sql);

if(mysqli_num_rows($result) > 0) {

    while($row = mysqli_fetch_assoc($result)){

        echo "var1:" . $row[$var1] . "|var2:" . $row[$var2] . "|var3:" . 
$row[$var3] . "|var4:" . $row[$var4] . "|var5:". $row[$var5] . "|var6:". 
$row[$var6] . "|var7:". $row[$var7] . "|var8:". $row[$var8] . ";";

    }
}
?>

同样,var 1-8首次运行脚本时返回了正确的数据,但是现在每次运行脚本时该值都保持不变。 我尝试关闭服务器然后再打开。 有任何想法吗?

我注意到在phpMyAdmin上,它一次显示25行,尽管我可以手动将其设置为显示更多行。 这与为什么它会通过SQL返回25行有什么关系? 我认为不会,这只是一个巧合,因为我最初手动拥有25个值,但是我完全陷入了困境。

您在变量中重复了相同的别名。 $var1$var4均为t1c$var5$var8均为t2c 由于数组索引是唯一的,因此只有一个$row['t1c']$row['t2c'] ,因此您只计算table4table8的行。 $row[$var1]$row[$var2]相同,因为$var1 == $var2

对所有变量使用不同的值,它应该可以按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM