2014-10-17 59 views
-1

所以我想回显一个表中有多少行与一个COUNT命令,但我故意没有表中的行现在要测试if语句,它是不工作,但最糟糕的是,它使网站的其他部分无法正常工作(页面弹出,但没有文字或数字显示在上面),当我在表格中添加一行时,它工作正常,没有行=没有工作。这是一段不起作用的代码。任何和所有的帮助是高度赞赏。MYSQL和PHP与回显表的错误

$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; 
    } 
+2

如果你刚开始学习PHP,请不要学过时的'mysql_query'接口。这很糟糕,并且在未来版本的PHP中被删除。像[PDO这样的现代化替代品并不难学](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/)。像[PHP The Right Way](http:// www。phptherightway.com/)可以帮助解释最佳做法。永远绝对**肯定**你的用户参数[正确逃脱](http://bobby-tables.com/php),否则你会有严重的[SQL注入漏洞](http://bobby-tables.com/ )。 – tadman 2014-10-17 21:04:30

+0

那为什么不起作用?从你的描述来看,它似乎工作正常.. – Ali 2014-10-17 21:05:04

+0

如果没有行,你不会在这里得到任何结果。如果有些东西是依赖于'$ entries1'被设置的,那将是一个问题。 – tadman 2014-10-17 21:06:01

回答

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这个,就像我在上面的代码中一样。然后可以使用从数据库中获取的任何行。例如;

while($row = $result->fetch_assoc()) { 
    $firstname = $row['firstname']; 
    $lastname = $row['lastname']; 
    echo "$firstname $lastname"; 
} 

希望这会有所帮助。

0

似乎你已经过了复杂的一切。从worldofjr你应该板载采取一些善意的提醒,但最简单的方式获得总行从表:

SELECT COUNT(*) as numberofrows FROM table1; 

还有其他一些不必要的线条在这里和逻辑是所有疯狂。真的没有必要去做

$enteries1 = $enteries1; 

这没有实现。

而是执行此操作:

while($row = mysql_fetch_assoc($query1)) 
    {   
     if(isset($row['numberofrows'])) 
     { 
     echo $row['numberofrows']; 
     } 
    }