我有以下php,基本上获得了mysql查询的结果:
$q2 = "SELECT FIELD FROM TABLENAME WHERE ID = 1;";
$con = new mysqli($server, $user, $pass);
if (mysqli_connect_errno())
{
$error = mysqli_connect_error();
exit();
}
else
{
$res = mysqli_query($con, $q2);
if ($res)
{
while($row = mysqli_fetch_assoc($res))
{
PRINT "THERE WAS A RESULT HERE: ";
}
}
else
{
$error = mysqli_error();
exit();
}
mysqli_free_result($res);
};
mysqli_close($con);
但有时会返回一个空值。这是有效的,基于父应用程序的工作原理,但是如何检测到空行并返回"这是一个空行:"?
您可能需要在PHP手册中查找mysqli_num_rows()。它使您可以看到上一个查询生成的结果集中有多少行。您可以使用行计数来确定是否显示结果或"无匹配结果"消息。
我希望这会有所帮助。
if ($res)
{
if($res->num_rows) {
while($row = mysqli_fetch_assoc($res))
{
PRINT "THERE WAS A RESULT HERE: ";
}
}
else {
PRINT "THERE WAS A EMPTY ROW: ";
}
}
参考:php.net
谢谢你最终得到的:
$q2 = "SELECT FIELD FROM TABLENAME WHERE ID = 1;";
$con = new mysqli($server, $user, $pass);
if (mysqli_connect_errno())
{
$error = mysqli_connect_error();
exit();
}
else
{
$res = mysqli_query($con, $q2);
$row_cnt = mysqli_num_rows($res);
if ($row_cnt == 0)
{
PRINT "THERE WAS NO RESULT: ";
}
else
{
if ($res)
{
while($row = mysqli_fetch_assoc($res))
{
PRINT "THERE WAS A RESULT HERE: ";
}
}
else
{
$error = mysqli_error();
exit();
}
mysqli_free_result($res);
}
};
mysqli_close($con);
我的php函数查询句柄:
private function query($sql_query){
$result = $this->connection->query($sql_query);
if(!$result){ //query fail
throw new Exception($this->connection->error.$sql_query);
}else {// "SUCCESS";
if(!$result->num_rows)
{
throw new Exception("THERE WAS NO RESULT: ");
}
for ($res = array(); $tmp = $result->fetch_array(MYSQLI_BOTH);){
$res[] = $tmp;
}
return $res;
}
}