这是我在MySQL中的实际查询:

 SELECT sndprefix, COUNT(*) FROM `inbox` WHERE
 (
 sndprefix='22' OR
 sndprefix='23' OR
 sndprefix='32' OR
 sndprefix='33' OR
 sndprefix='34' OR
 sndprefix='42' OR
 sndprefix='43'
 )
 GROUP BY sndprefix;

我得到了正确的回答,比如:
 sndprefix  COUNT(*)
 22     3
 23     5
 32     1
 33     1
 43     1

我的问题是,在浏览器中显示该查询并将其解析为json格式的PHP代码是什么。
提前谢谢。
抱歉,如果我之前没有发布过代码,我只是想熟悉stackoverlow的用户界面查找编辑选项。。
这是我迄今为止尝试过的代码:
 <?php
 $query="SELECT sndprefix, COUNT(*) FROM `inbox` WHERE
 (
 sndprefix='22' OR
 sndprefix='23' OR
 sndprefix='32' OR
 sndprefix='33' OR
 sndprefix='34' OR
 sndprefix='42' OR
 sndprefix='43'
 )
 GROUP BY sndprefix;";

 $result = mysql_query($query);
while($sunget = mysql_fetch_array($result)){
    foreach($sunget AS $key => $value) { $conget[$key] = stripslashes($value); }
 echo "". nl2br( $sunget['sndprefix']) ."";
 }
 ?>

谢谢。

最佳答案

好。。看起来问题更新了。
你做错了。。在多个层次上。我想糟糕的辅导是错误的。
询问
您应该阅读更多关于WHERE子句以及如何使用它的内容。This page将提供一些基本信息,但是您应该找到一些关于MySQL的书籍(并且只介绍MySQL,不包括PHP)。
这将使查询更易于阅读:

SELECT
    sndprefix AS prefix,
    COUNT(*) AS count
FROM inbox
WHERE sndprefix IN ('22', '23', '32', '33', '34', '42', '43')
GROUP BY sndprefix;

另外,您可能想了解MySQL中的JOIN语句,因为我感觉到,这个特定前缀列表有一些共同点。
由于前缀是重复的,所以最好放在单独的表中。至少从normalization的角度来看。
在PHP中查询数据库
您不应该使用古老的mysql_*函数编写新代码。它们不再被维护,社区已经开始deprecation process,现在甚至在手册中添加了一个警告:(请参阅red box)。
相反,您应该学习prepared statements并使用PDOMySQLi。如果你不能决定,this article将有助于选择。如果你想学习,here is a quite good PDO-related tutorial
假设您已经使用PDO与数据库交互(我只是更喜欢它而不是MySQLi)。
$connection = new PDO(
                  'mysql:host=localhost;dbname=my_magc_db;charset=UTF-8',
                  'username', 'password');
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
// the connection has been established, and object configured

$sql = 'SELECT
            sndprefix AS prefix,
            COUNT(*) AS count
        FROM inbox
        WHERE sndprefix IN ('22', '23', '32', '33', '34', '42', '43')
        GROUP BY sndprefix';

$statement = $connection->query( $sql );
// no need to prepare the statement this time, because values are predefined
// if values '22', '23', etc. depend on user input, code would be different

$data = $statement->fetchAll(PDO::FETCH_ASSOC);
// now $data contains all the values.
// you van use var_dump($data) to "look inside" variable

生成JSON
因为$data已经是一个包含所有值的数组,所以您可以简单地编写这个echo json_encode( $data );来生成JSON。
产出
既然已经有了数组,就可以编写:
foreach ( $data as $row ) {
    echo $row['prefix'], ' ', $row['count'], PHP_EOL, '<br>';
}

有问题吗?

10-05 20:28
查看更多