所以我试图用一个COUNT命令来回显一个表中有多少行,但是我故意在表中没有行来测试if语句,它不起作用,但是最糟糕的是,它使网站的其余部分不起作用(弹出页面但没有显示文本或数字),当我向表中添加一行时,它工作正常,没有行=没有工作。这是一段不起作用的代码。任何和所有帮助都非常感谢。
$query1 = mysql_query("
SELECT *, COUNT(1) AS `numberofrows` FROM
`table1` WHERE `user`='$username' GROUP BY `firstname`,`lastname`
");
$numberofrowsbase = 0;
while($row = mysql_fetch_assoc($query1))
{
if(isset($row['numberofrows']))
{
$enteries1 = $enteries1;
}else{
$enteries1 = $numberofrowsbase;
}
echo enteries1;
}
答案 0 :(得分:0)
也许违背我更好的判断,我会试着给你一个答案。这段代码有很多问题......
请勿使用mysql_
mysql_
扩展名已弃用。您应该使用mysqli_
或PDO。我将在这里使用mysqli_
。
SQL注入
您的代码对SQL注入非常开放,其他人可能会真正搞乱您的数据库。请阅读How can I prevent SQL injection in PHP?以获取更多信息。
守则
您不需要使用SQL函数对行进行计数,尤其是如果您想对查询所获得的数据执行其他操作(我认为您已经使用了这些数据)。重新计算所有列的数量。
在PHP中,您可以使用内置函数获取结果集中的行数。
所有这些事情在一起。你应该使用这样的东西;
// Connect to the database
$mysqli = new mysqli($host,$user,$pass,$database); // fill in your connection details
if ($mysqli->connect_errno) echo "Error - Failed to connect to database: " . $mysqli->connect_error;
if($query = $mysqli->prepare("SELECT * FROM `table1` WHERE `user`=?")) {
$query->bind_param('s',$username);
$query->execute();
$result = $query->get_result();
echo $result->num_rows;
}
else {
echo "Could not prepare query: ". $mysqli->error;
}
结果中的行数现在保存到变量$result->num_rows
,因此如果需要,可以使用echo this,就像我在上面的代码中一样。然后,您可以继续使用从数据库中获得的任何行。例如;
while($row = $result->fetch_assoc()) {
$firstname = $row['firstname'];
$lastname = $row['lastname'];
echo "$firstname $lastname";
}
希望这有帮助。
答案 1 :(得分:0)
似乎你已经过了复杂的一切。来自worldofjr的一些好建议你应该采用板载,但最简单的方法是从表中获取总行数:
SELECT COUNT(*) as numberofrows FROM table1;
这里还有其他几条不必要的线,逻辑是所有的疯狂。没有必要这样做
$enteries1 = $enteries1;
这没有成就。
请改为:
while($row = mysql_fetch_assoc($query1))
{
if(isset($row['numberofrows']))
{
echo $row['numberofrows'];
}
}