我想获得满足条件的行数。
mysql_query("SELECT COUNT(*) FROM sid WHERE sid='".session_id()."'");
这个忽略了这个条件。
更新
$session = session_id();
$sql = "SELECT COUNT(*) as row_count FROM sid WHERE sid = '$session' ";
var_dump($r = mysql_query($sql));//resource(4) of type (mysql result) (1)
var_dump(mysql_fetch_assoc($r));
//array(1) { ["row_count"]=> string(1) "1" } - this result is OK(2)
(1)resource(4)
- 我认为4是计数
(2)mysql_real_escape_string($_SESSION['id']);
给出0
请注意:
我已经从mysql_num_rows
更改为此类计数,因为我认为它会立即返回计数,我不必编写更多行来获取此基本数据。
答案 0 :(得分:2)
这样做的正确方法是:
$session = mysql_real_escape_string($_SESSION['id']); <<-- Get the session id
echo "debug: session_id = ".htmlentities($session);
$sql = "SELECT count(*) as row_count FROM tablename WHERE sid = '$session' ";
$result = mysql_query($sql);
if (!$result) {
die('error in query '.$sql.' error is: '.mysql_error());
}
//we only have 1 result
$row = mysql_fetch_array($result);
//always sanitize so you don't suffer XSS attacks when the query changes
//and the $row['x'] changes from an integer to a user-supplied string.
$count = intval($row['row_count']);
echo "count is: ".$count;
表格名称和列名称可以相同,但在您的情况下,它们可能不是。
sid
显然代表字段“session_id”,因此您需要使用您的表名替换sid
之后的第一个FROM
。
答案 1 :(得分:0)
首先在php变量中编写你的查询并回显它以检查session_id()返回什么,然后尝试可能是你的session_id()中没有任何内容;像
$sql = "SELECT COUNT(*) FROM sid WHERE sid='".session_id()."'";
echo $sql;
并在phpmyadmin中运行它,如果它工作比你的查询是qrite否则出错了
答案 2 :(得分:0)
table name =“sessions”
列名=“sid”
mysql_query("SELECT COUNT(*) FROM sessions WHERE sid='".session_id()."'");