我想计算MySQL数据库中有多少行有两个特定值。我的表格设置如下:
|---------------------|
| ids |
|---------------------|
|source_id | target_id|
|----------|----------|
| 2 | 6|
| 2 | 6|
| 3 | 4|
|---------------------|
我想要计算source_id = 2
和target_id = 6
的行数
我试过这句话:
<?php
$prep_stmt = "SELECT source_id FROM ids WHERE source_id = 2 AND target_id = 6";
if (!$result = $mysqli->query($prep_stmt)) {
die("Failed");
} else {
$num_rows = $result->num_rows;
echo $num_rows;
}
?>
但是,PHP文件在第三行之后停止运行。
答案 0 :(得分:1)
SELECT COUNT(*) FROM ids WHERE source_id=2 AND target_id=6
答案 1 :(得分:1)
您的代码看起来有点奇怪。 如果你想使用预先准备好的陈述,那就完全不同了:
<?php
$stmt = $mysqli->prepare("SELECT COUNT(*) FROM `ids` WHERE `source_id` = ? AND `target_id` = ?");
$stmt->bind_param("ii", $source_id, $target_id);
$stmt->execute();
$stmt->bind_result($count);
$stmt->fetch();
$stmt->close();
echo $count;
没有准备好的陈述。
<?php
echo $mysqli->query("SELECT COUNT(*) FROM `ids` WHERE `source_id` = 2 AND `target_id` = 6");
最后一点,如果你在一个条件中指定任何,请务必将其括在括号中:
<?php
function fn() {
return "something";
}
if (($foo = fn())) {
// The condition is true if $foo isset, or in other words not null after the function was called.
}
if (!($foo = fn())) {}
if (($foo = fn()) === null) {}
// ...
答案 2 :(得分:0)
SELECT COUNT(*) FROM ids WHERE source_id = 2 AND target_id = 6";
将为您提供与您想要的内容相对应的条目数。
(它将给出一行包含1列,包含对应于where close的行数)