SELECT e.id AS id, t.name AS name, Count(*) AS num from Ecdsc as e left join E_Type as t on e.type = t.Id where group by e.sub_type order by num desc limit 4这个是我的sql语句在 数据库中使用查询出来结果没问题,然后我用php连数据库就出错,读不到正确的记录,请问可以这样写吗?
调试欢乐多
$this->Query_ID = @mysql_query($Query_String,$this->Link_ID);
while ($row = mysql_fetch_assoc($this->Query_ID))
这个是数据读取操作时的代码, mysql_fetch_assoc这里就只能读到一条记录。
我就是要取排名前4条数据
这样就出错了,我找了个普通的代码测试了下
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource 以下是代码,
// 连接到数据库
$conn=mysql_connect($mysql_server_name, $mysql_username,
$mysql_password);
// 从表中提取信息的sql语句
$strsql="select e.Id as `id`, t.name as `name`, (select count(*) from Ecdsc as e where e.type = t.Id and e.type=2 ) as `num` from E_Type as t order by num";
// 执行sql查询
$result=mysql_db_query($mysql_database, $strsql, $conn);
// 获取查询结果
$row=mysql_fetch_row($result);
echo '<font face="verdana">';
echo '<table border="1" cellpadding="1" cellspacing="2">'; // 显示字段名称
echo "\n<tr>\n";
for ($i=0; $i<mysql_num_fields($result); $i++)
{
echo '<td bgcolor="#000F00"><b>'.
mysql_field_name($result, $i);
echo "</b></td>\n";
}
echo "</tr>\n";
// 定位到第一条记录
mysql_data_seek($result, 0);
// 循环取出记录
while ($row=mysql_fetch_row($result))
{
echo "<tr>\n";
for ($i=0; $i<mysql_num_fields($result); $i++ )
{
echo '<td bgcolor="#00FF00">';
echo "$row[$i]";
echo '</td>';
}
echo "</tr>\n";
}
echo "</table>\n";
echo "</font>"; mysql_free_result($result); mysql_close(); //$sql = sprintf("SELECT e.evt_sub_type sub, e.evt_sub_type AS id, t.subtypename AS name, Count(*) AS num from Event as e left join Evt_Sub_Type as t on e.evt_sub_type = t.Id where e.happentime >= from_unixtime(%d) and e.happentime < from_unixtime(%d) group by e.evt_sub_type order by num desc limit 4", $startTimestamp, $endTimestamp);
//print $sql;
//$sql="SELECT t.Id, t.typeid, t.subtypename AS name, Count(*) AS num from Event as e left join Evt_Sub_Type as t on e.evt_sub_type = t.Id where t.typeid=2 group by t.Id order by num desc";
// $sql="SELECT t.Id, t.typeid, t.subtypename AS name,count(t.Id) as num from Event as e left join Evt_Sub_Type as t on t.id = e.evt_sub_type where t.typeid=2 group by t.id order by num desc limit 10 ";
//$sql = sprintf("SELECT t.subtypename AS name, Count(*) AS num FROM Event AS e Left Join Evt_Sub_Type AS t ON e.evt_sub_type = t.Id where e.evt_type=2 GROUP BY t.SubTypeName order by num desc limit 10");
//$sql="SELECT t.Id, t.typeid, t.subtypename AS name,e.evt_sub_type,count(t.Id) as num from Event as e left join Evt_Sub_Type as t on t.id = e.evt_sub_type where t.typeid=2 group by t.id ";
//$sql="SELECT t.subtypename AS name, count(e.e_id) as num FROM `Event` AS e Left Join `Evt_Sub_Type` AS t ON e.evt_sub_type = t.Id where e.evt_type=2 GROUP BY e.evt_sub_type order by num desc limit 10";
//print $sql."<br>";
//$result=$objCache->cache($sqlA, 'getall', 't');
// $sql = "SELECT t.subtypename AS name FROM `Event` AS e Left Join `Evt_Sub_Type` AS t ON t.Id = e.evt_sub_type where e.evt_type=2";
/*if($this->query($Query_String))
{
}*/ //$sql=" select t.Id as `id`, t.subtypename as `name`, (select count(*) from Event as e where e.evt_sub_type = t.Id and e.evt_type=2 and e.evt_status != 3) as `num` from Evt_Sub_Type as t order by num ";
//$sql = "SELECT t.subtypename AS name FROM `Event` AS e Left Join `Evt_Sub_Type` AS t ON t.Id = e.evt_sub_type where e.evt_type=2";
//$sql = sprintf("SELECT t.subtypename AS name, Count(e.e_id) AS num FROM Event AS e Left Join Evt_Sub_Type AS t ON e.evt_sub_type = t.Id where e.evt_type=2 GROUP BY t.SubTypeName order by num desc limit 4");