如何在“从information_schema.TABLES中选择SELECT TABLE_NAME”中使mysql“ num_rows”工作?

时间:2018-09-09 07:09:32

标签: php mysql

$query_Recordset4 = sprintf("SELECT TABLE_NAME FROM information_schema.TABLES 
 WHERE TABLE_SCHEMA='message' and TABLE_NAME like '1a%nd5'");
 $Recordset4 = mysql_query($query_Recordset4, $messageconnection);
 $totalRows_Recordset4 = mysql_num_rows($Recordset4);

我在PhpMyAdmin中运行了关于SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA='message' and TABLE_NAME like '1a%nd5'的SQL查询。 总共显示了“ 2”行。

但是,我在php中询问答案“ mysql_num_rows”为“ 0”。 “ mysql_num_rows”在SELECT TABLE_NAME FROM information_schema.TABLES中不起作用吗? 什么是替代方法?

如果其他方法不在内容之下。 $query_Recordset5 = sprintf("SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA='message' and TABLE_NAME like '$colname_Recordset6' "); $row_Recordset5 = mysql_fetch_assoc($Recordset5);

“ mysql_fetch_assoc”的结果没有显示任何内容,但在其他mysql_query中有效。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

您的问题实际上出在您对sprintf的调用中,它正在尝试将%n作为转换规范。您需要将该字符串中的%更改为%%,即

$query_Recordset4 = sprintf("SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA='message' and TABLE_NAME like '1a%%nd5'");

您还应该从使用mysql_函数切换到mysqli_,因为由于代码中的错误,从PHP5.5开始不推荐使用mysql函数,而从PHP7开始取消了mysql函数。

答案 1 :(得分:0)

从某些表中选择后,方法mysql_num_rows可以很好地计数结果(请参见doc http://php.net/manual/en/function.mysql-num-rows.php)。

只需在表格上选择计数:https://dev.mysql.com/doc/refman/8.0/en/counting-rows.html

PhpMyAdmin中的总行数?您无法以一种查询方式执行此操作。听起来,您尝试做错了事。总行数可以很好地计入一个特定的表。您还可以遍历数据库中的所有表以获取所有记录,但是我认为您并不是真的需要这个(我从未听说过类似的东西)。

顺便说一句。使用mysqli代替mysql

答案 2 :(得分:0)

print_r(mysql_fetch_array($Recordset4));

//更新

$query = mysqli_query($messageconnection, "SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='message' and TABLE_NAME like '1a%%nd5'");
$row = mysqli_fetch_assoc($query);
$result_count = $row['COUNT(*)'];

echo $result_count;