2011-03-31 94 views
0

我試圖計算MySQL數據庫中的行數並使用PHP報告該數字。我讀過所有的文檔,我認爲這段代碼應該可以工作,但無論我嘗試什麼,都會失敗。計算MySQL行的數量

<?php 
session_start(); 
if (isset($_SESSION['username'])) { 
    $username = $_SESSION['username']; 
    $q = "SELECT * FROM messages WHERE recepiants='$username' AND readcheck='T'"; 
    $count = mysql_num_rows($q); 
?> 
<div class="user_info">Logged in as <?php echo $username; ?> | <a href="admin.php">Add a post</a> | <a href="experiment.php">View Posts</a> | <a href="inbox.php">Message Center <?php echo $count; ?> </a> | <a href="logout.php">Log Out</a></div> 
<?php } else {?> 

腳本成功報道$username$count不會返回一個數字。有任何想法嗎?我是否在某處丟失了一個括號或分號?

+3

'recepiants' - 這是如何在你的表拼寫的列? – 2011-03-31 17:41:46

+0

我希望我不是英語母語的時代喜歡這些。很高興我的母親沒有看到那個 – Thomas 2011-03-31 17:59:21

回答

6

你錯過了正在運行的實際查詢的事情:

<?php 
session_start(); 
if (isset($_SESSION['username'])) { 
    $username = $_SESSION['username']; 
    $q = "SELECT * FROM messages WHERE recepiants='$username' AND readcheck='T'"; 
    $result = mysql_query($q); 
    $count = mysql_num_rows($result); 
?> 
<div class="user_info">Logged in as <?php echo $username; ?> | <a href="admin.php">Add a post</a> | <a href="experiment.php">View Posts</a> | <a href="inbox.php">Message Center <?php echo $count; ?> </a> | <a href="logout.php">Log Out</a></div> 
<?php } else {?> 

可能會更好b E要運行在查詢中COUNT,如果這就是你需要:

<?php 
session_start(); 
if (isset($_SESSION['username'])) { 
    $username = $_SESSION['username']; 
    $q = "SELECT COUNT(*) AS Count FROM messages WHERE recepiants='$username' AND readcheck='T'"; 
    $result = mysql_query($q); 
    $result = mysql_fetch_assoc($result) 
    $count = $result['Count']; 
?> 
<div class="user_info">Logged in as <?php echo $username; ?> | <a href="admin.php">Add a post</a> | <a href="experiment.php">View Posts</a> | <a href="inbox.php">Message Center <?php echo $count; ?> </a> | <a href="logout.php">Log Out</a></div> 
<?php } else {?> 

而且,正如其他人所指出的,你需要一個活動的數據庫連接。

http://www.php.net/manual/en/function.mysql-fetch-assoc.php

8

mysql_num_rows需要查詢資源 - 您正在提供一個字符串。您需要執行查詢,然後才能期望瞭解其結果。

$sql = "SELECT * FROM messages WHERE recepiants='$username' AND readcheck='T'"; 
if(!$query = mysql_query($sql)) 
    trigger_error(mysql_error().' SQL: '.$sql); 
$count = mysql_num_rows($query); 

我懷疑上面的代碼也會根據您在查詢中的'收件人'錯字發生錯誤。始終檢查返回值mysql_query

編輯:正如jeroen指出,如果你粘貼的是該頁面的整個代碼,那麼你忽略了打開數據庫連接。請參閱mysql_connectmysql_select_db

+0

aww你讓我了22秒。榮譽 – corroded 2011-03-31 17:42:24

+0

這只是一個片段,我連接。 – Thomas 2011-03-31 18:04:54

2

您正在評估$ Q爲一個字符串,你錯過了在$ Q A的mysql_query()

1

有幾件事情,從運行的實際查詢來檢查開:

  1. 是真的列叫recepiants還是可能是recipients
  2. 你打開了一個數據庫連接嗎?
4

您還沒有實際執行過您的查詢。

$q = "SELECT * FROM messages WHERE recepiants='$username' AND readcheck='T'"; 
$result = mysql_query($q); 
if ($result) { 
    $count = mysql_num_rows($result); 
} 
2

您忘記了運行查詢。

$res = mysql_query($q); 
$count = mysql_num_rows($res); 
3

這是錯誤的(需要有一個實際的查詢):

$q = "SELECT * FROM messages WHERE recepiants='$username' AND readcheck='T'"; 
$count = mysql_num_rows($q); 

它應該是:

$q = "SELECT * FROM messages WHERE recepiants='$username' AND readcheck='T'"; 
$result = mysql_query($q, $connection); 
$count = mysql_num_rows($result); 
1

查詢是:

SELECT count(*) FROM table 
-2

下面是簡單的代碼,我相信它會爲許多工作在那裏。當前的代碼將檢查數據庫中是否存在已經存在的數據庫,如果它已經存在則不會將記錄添加到數據庫,如果它永遠不存在,則會將記錄添加到數據庫中。

<?php 
    $chkval =52364; 

    $con = mysql_connect("servername","username","password"); 

    if (!$con) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 

    mysql_select_db("databasename", $con); 

    $result = mysql_query("SELECT column_name FROM table_name where column_name = '$chkval'"); 

    if(mysql_num_rows($result)>0) 
     { 
      echo "There are records"; 

     } 
     else 
     { 
      mysql_query("INSERT INTO tablename (column_name) 
       VALUES ('$chkval')"); 

           echo "record added"; 

     } 
      mysql_close($con); 

?> 
+2

請不要在您的答案中包含宗教信息。謝謝。除此之外,選擇列不是'COUNT()'是一個壞主意。 – ThiefMaster 2012-07-05 10:02:59