计算MySQL行的数量
我试图计算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
不会返回一个数字。有任何想法吗?我是否在某处丢失了一个括号或分号?
你错过了正在运行的实际查询的事情:
<?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 {?>
而且,正如其他人所指出的,你需要一个活动的数据库连接。
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_connect和mysql_select_db。
您正在评估$ Q为一个字符串,你错过了在$ Q A的mysql_query()
有几件事情,从运行的实际查询来检查开:
- 是真的列叫
recepiants
还是可能是recipients
? - 你打开了一个数据库连接吗?
您还没有实际执行过您的查询。
$q = "SELECT * FROM messages WHERE recepiants='$username' AND readcheck='T'";
$result = mysql_query($q);
if ($result) {
$count = mysql_num_rows($result);
}
您忘记了运行查询。
$res = mysql_query($q);
$count = mysql_num_rows($res);
这是错误的(需要有一个实际的查询):
$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);
查询是:
SELECT count(*) FROM table
下面是简单的代码,我相信它会为许多工作在那里。当前的代码将检查数据库中是否存在已经存在的数据库,如果它已经存在则不会将记录添加到数据库,如果它永远不存在,则会将记录添加到数据库中。
<?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);
?>
请不要在您的答案中包含宗教信息。谢谢。除此之外,选择列不是'COUNT()'是一个坏主意。 – ThiefMaster 2012-07-05 10:02:59
'recepiants' - 这是如何在你的表拼写的列? – 2011-03-31 17:41:46
我希望我不是英语母语的时代喜欢这些。很高兴我的母亲没有看到那个 – Thomas 2011-03-31 17:59:21