我有一个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个数值,但我完全困惑。
发布于 2018-10-23 20:54:01
你在变量中重复相同的别名。$var1通过$var4都是t1c,$var5通过$var8都是t2c。因为数组索引是唯一的,所以只有一个$row['t1c']和$row['t2c'],所以您只是在计算table4和table8中的行。$row[$var1]与自$var1 == $var2以来的$row[$var2]相同。
对所有变量使用不同的值,它应该会像您预期的那样工作。
https://stackoverflow.com/questions/52957631
复制相似问题