我似乎无法在其他问题中找到这些信息,即使我认为这是一个基本问题。
在mySQL中,我试图从数千个不同模式中出现的一个表中计算“rowid”列中的行数(因此单独列出模式是不切实际的)。
注意:某些模式没有该表,因此没有信息。
谢谢!
修改:
我尝试了下面的脚本并且它一直在返回:
致命错误:调用成员函数execute()...
这是在SECOND执行功能上。为了解决这个问题,我手动将第一个sql的结果输入到第二个变量sql中,但这给了我:
致命错误:在第18行(又名第一个准备语句)<_ em>的_____上的非对象上调用成员函数prepare()
这是代码。你会看到我一直在玩它(我使用了一种不同的连接方法,看看它是否改变了什么)
<html>
<head>
</head>
<body>
<?php
$db = mysql_connect(localhost,******, *******);
$sql = "SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Ftrans /*this is our specific table name*/'
AND COLUMN_NAME = 'rowid'";
$stmt = $db->prepare($sql); /*this is where I got the second error*/
$stmt->execute();
while ($row = $stmt->fetchObject()) {
// $sql2 = "SELECT COUNT(*) FROM $row->TABLE_SCHEMA.$row->TABLE_NAME";
$sql2 = "SELECT COUNT(*) FROM fp_AIRG.Ftransi";
$stmt2 = $db->prepare($sql2);
$stmt2->execute();
$count = $stmt2->fetchColumn();
}
mysql_close($db);
?>
</body>
</html>
答案 0 :(得分:1)
SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tbl_name'
AND COLUMN_NAME = 'rowid'
然后返回每条记录 -
SELECT COUNT(rowid)
FROM {TABLE_SCHEMA}.{TABLE_NAME}
这是一个基于PHP的实现 -
<?php
try {
$db = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'username', 'password');
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
$sql = "SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tbl_name'
AND COLUMN_NAME = 'rowid'";
$stmt = $db->prepare($sql);
$stmt->execute();
while ($row = $stmt->fetchObject()) {
$sql = "SELECT COUNT(rowid) FROM `{$row->TABLE_SCHEMA}`.`{$row->TABLE_NAME}`";
$stmt2 = $db->prepare($sql);
$stmt2->execute();
$count = $stmt2->fetchColumn();
echo "{$row->TABLE_SCHEMA}.{$row->TABLE_NAME}: $count\n";
}
我没有运行它,所以它可能会有一些错误,但它应该让你朝着正确的方向前进。