这是我在 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 的 UI,找到编辑选项..
这是我到目前为止尝试过的代码:
<?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;
另外,您可能想了解 JOIN MySQL 中的语句,因为我有一种感觉,这个特定前缀列表有一些共同点。
而且由于前缀是重复的,所以将它们放在单独的表格中可能会更好。至少来自 normalization观点。
用PHP查询数据库
您不应该使用古老的
mysql_*
函数编写新代码。它们不再维护,社区已经开始 deprecation process ,现在甚至在手册中添加了警告:(参见 red box)。相反,您应该了解 prepared statements并使用 PDO或 MySQLi .如果您不能决定,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>'; }
有什么问题吗?
关于php - PHP 中的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10968552/