Php MySQLi查询是否为空表?
我想知道某个表是空的还是否,现在我意识到这个代码的问题:Php MySQLi查询是否为空表?,php,mysqli,Php,Mysqli,我想知道某个表是空的还是否,现在我意识到这个代码的问题: // if table is empty it must return TRUE, if full FALSE private function isEmpty($tableName) { if ($result = $this->mysqli->prepare("SELECT COUNT(*) FROM ?")) { $result->bind_param("s",$tab
// if table is empty it must return TRUE, if full FALSE
private function isEmpty($tableName)
{
if ($result = $this->mysqli->prepare("SELECT COUNT(*) FROM ?"))
{
$result->bind_param("s",$tableName);
$result->execute();
$row_cnt = $result->num_rows;
if (empty($row_cnt))
{
return TRUE;
}
else
{
return FALSE;
}
}
}
这段代码似乎不是很完美,我想知道有没有更好的方法来获得相同的结果,但是使用predictSQL EXISTS还是其他什么?多谢各位
更新:
谢谢你的评论和回答,但无论如何我不知道怎么做,这叫一个错误:
$mysqli = new mysqli("localhost","root","","database");
if ($result = $mysqli->prepare("SELECT COUNT(*) FROM `talbe` LIMIT 1"))
{
$row = $result->fetch_row();
echo "<pre>";
print_r($row);
echo "</pre>";
$result->close();
}
$mysqli->close();
就是这样。COUNT(*)
可以确定一个表是否为空,前提是该表没有太多的行
另一种选择是从${table}LIMIT 1中选择(某物)代码>如果返回结果,则表不是空的
但您确定可以通过mysqli中的参数设置表名吗?我不认为是这样,需要检查。我认为你不可能轻松地准备一个表名。我仍然需要一个解决方案,我找不到完整的示例。这在mysql而不是mysqli中似乎很简单。表名可能有害有任何危险吗?它来自用户吗?不,但谁知道。。你知道的。。我解决了。等待更新。@Artefact2错误,
SELECT COUNT(*)LIMIT 1
将返回与SELECT COUNT(*)相同的结果,否?(即我认为限额是在计数(*)之后应用的)。再一次,我需要检查一下(这是漫长的一天!)啊,是的,你说得对,很抱歉。那么,只要简单的“选择*限制1”就可以了。
$mysqli = new mysqli("localhost","root","","db");
if ($result = $mysqli->query("SELECT * FROM `table` LIMIT 1"))
{
if ($obj = $result->fetch_object())
{
echo "NOT EMPTY";
}
else
{
echo "empty";
}
$result->close();
}
$mysqli->close();