计算mysql中的语法

时间:2011-11-17 10:32:15

标签: php mysql

我想获得满足条件的行数。

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更改为此类计数,因为我认为它会立即返回计数,我不必编写更多行来获取此基本数据。

3 个答案:

答案 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()."'");