MySQL SELECT WHERE id IN()获取num_rows

时间:2016-04-13 10:53:40

标签: php mysql

我使用此代码显示数据库中的类别

$select_newscats = $mysqli->query("SELECT * FROM news_cats order by ord_show asc");

while ($rows_newscats = $select_newscats->fetch_array(MYSQL_ASSOC)){

$id_newscats          = $rows_newscats ['id'];
$title_newscats       = $rows_newscats ['title'];
$ord_show_newscats    = $rows_newscats ['ord_show'];
$icon_newscats        = $rows_newscats ['icon'];
$kind_newscats        = $rows_newscats ['kind'];
$description_newscats = $rows_newscats ['description'];

//here is my data

}

我在新闻表行中为categoies它的名字是猫,我在其中插入数据1,5,6,8

我使用此代码来计算每只猫内的新闻

$select_newsnum = $mysqli->query("SELECT id FROM news where $id_newscats  IN (cats)");
$rows_newsnum   = $select_newsnum->fetch_array(MYSQL_ASSOC);
$num_newsnum    = $select_newsnum->num_rows;

它只获取第一个值,例如,如果我有这个值1,5,6,8它只获得1第一个值

2 个答案:

答案 0 :(得分:1)

我会在单个sql调用中进行计数,而不是使用php逻辑和单独的sql调用。为此,我将使用左连接加入2个表并使用连接条件而不是from sklearn.pipeline import make_pipeline from sklearn.preprocessing import Normalizer # classifier example from sklearn.svm import SVC pipeline = make_pipeline(Normalizer(), SVC()) 子句:

in

显然,请确保连接条件是正确的。循环遍历结果集时,每个类别的新闻数将位于SELECT nc.id, nc.title, nc.ord_show, nc.icon, nc.king, nc.description, count(n.id) as newsnum FROM news_cats nc LEFT JOIN news n ON nc.id=n.cats GROUP BY nc.id, nc.title, nc.ord_show, nc.icon, nc.king, nc.description ORDER BY nc.ord_show asc 字段中。

答案 1 :(得分:0)

$select_newsnum = $mysqli->query("SELECT id FROM news where $id_newscats  IN (cats)");
$rows_newsnum   = $select_newsnum->fetch_array(MYSQL_ASSOC);
$num_newsnum    = $select_newsnum->num_rows;

这里$ rows_newsnum只返回数据库中的第一行。

Fetch Array一次只返回一行,然后向前移动行指针。例如,您提供的数据集上的以下代码(1,5,6,8)。

$rows_newsnum = $select_newsnum->fetch_array(MYSQL_ASSOC);
echo $rows_newsnum["id"]; // Will print 1
$rows_newsnum = $select_newsnum->fetch_array(MYSQL_ASSOC);
echo $rows_newsnum["id"]; // Will print 5

你需要做的是将它移动到while循环(就像你的第一个例子)来访问每一行,如下所示:

while($row = $select_newsnum->fetch_array(MYSQL_ASSOC)) {
    echo $rows_newsnum["id"] . ", ";
}

// Will produce:
// 1, 5, 6, 8,

如果您只想获得点数

您现有的代码应该可以正常运行。你可以省略对fetch_array的调用。

$num_newsnum = $select_newsnum->num_rows;
echo $num_newsnum; // Will display 4

在PHP文档中阅读有关fetch_array的更多信息: http://php.net/manual/en/mysqli-result.fetch-array.php

希望这有帮助。