[英]mysql_query returning wrong result
Consider the following code 考虑以下代码
if ( isset( $_SESSION['FBID'] ) ) {
$uid = $_SESSION['FBID'];
$sql = "SELECT *, count(member_nr) AS notifyMe
FROM poolWinners
WHERE member_nr = '$uid' AND notification ='1'";
$result = mysql_query($sql);
while($row=mysql_fetch_array($result)){
$notification = $row['notifyMe'];
}//while
if ( $notification > 0 ) {
echo '<span class="badge">' . $notification . '</span>';
} //if
var_dump($notification);
} //isset( $_SESSION['FBID'] )
The above script returns how many notifications a member has as you can see in image below 上面的脚本返回成员所拥有的通知数量,如下图所示
My Problem 我的问题
The script is returning the wrong result (wrong number of notifications). 脚本返回错误的结果(错误的通知数量)。 Have a look at the table below, the member number appears 3 times in the table so:
$notification = $row['notifyMe']
Should = 3 AND NOT 1 看一下下表,该成员号在该表中出现3次,因此:
$notification = $row['notifyMe']
应该= 3 AND NOT 1
What am I missing or doing wrong here? 我在这里想念或做错了什么? Thanks for reading
谢谢阅读
Use 采用
$sql = "SELECT *, count(*) AS notifyMe
FROM poolWinners
WHERE member_nr = '$uid' AND notification ='1'";
Notice count(*)
, it will fetch how many records are matching criteria. 注意
count(*)
,它将获取符合条件的记录数。
And initialize $notification = 0;
并初始化
$notification = 0;
at the start. 在开始时。
Have you tried approaching it from this angle 您是否尝试过从这个角度接近它
$sql = "SELECT * FROM poolWinners WHERE member_nr = '$uid' AND notification ='1'";
$result = mysql_query($sql);
$notification = array();
while($row=mysql_fetch_array($result)){
$notification[] = $row['notifyMe'];
}
//an array count on notification should give you the number of elements in the array i.e those that matched the query
$total_count = count($notification);
In your code the notification will be always one, since it will take only the notifyMe field of last row in the result set. 在您的代码中,通知将始终为1,因为它将仅使用结果集中最后一行的notifyMe字段。
If you want to get number of notifications, try this 如果要获取通知数量,请尝试此
if ( isset( $_SESSION['FBID'] ) ) {
$uid = $_SESSION['FBID'];
$sql = "SELECT *, count(member_nr) AS notifyMe
FROM poolWinners
WHERE member_nr = '$uid' AND notification ='1'";
$result = mysql_query($sql);
$notification = 0;
while($row=mysql_fetch_array($result)){
$notification++;
/*
OR $notification += $row['notifyMe'];
*/
}//while
if ( $notification > 0 ) {
echo '<span class="badge">' . $notification . '</span>';
} //if
var_dump($notification);
} //isset( $_SESSION['FBID'] )
$sql = "SELECT *
FROM poolWinners
WHERE member_nr = '$uid' AND notification ='1'";
$result = mysql_query($sql);
$notification = mysql_num_rows($result);
$sql = "SELECT * FROM poolWinners WHERE member_nr = '$uid' AND notification ='1'";
if ($result=mysqli_query($con,$sql))
{
// Return the number of rows in result set
echo "Toal notification".mysqli_num_rows($result);
}
mysqli_close($con);
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.