2014-10-17 58 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']; 
     } 
    }