编辑:已解决
我找到了我正在寻找的解决方案。感谢Alex指出我的错误。
我试图计算查询中非空的结果数。
以下是我的表现:
function checkImages($id)
{
global $mysqli;
$stmt = $mysqli->prepare("SELECT
Img_1,
Img_2,
Img_3,
Img_4,
Img_5,
Img_6,
Img_7,
Img_8,
Img_9,
Img_10,
Img_11,
Img_12,
Img_13,
Img_14,
Img_15,
Img_16,
Img_17,
Img_18,
Img_19,
Img_20,
Img_21,
Img_22,
Img_23,
Img_24,
Img_25,
Img_26,
Img_27,
Img_28,
Img_29,
Img_30
FROM kittens
WHERE
id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->bind_result($img1, $img2, $img3, $img4, $img5, $img6, $img7, $img8, $img9, $img10, $img11, $img12, $img13, $img14, $img15, $img16, $img17, $img18, $img19, $img20, $img21, $img22, $img23, $img24, $img25, $img26, $img27, $img28, $img29, $img30);
while ($stmt->fetch()){
$row[] = array('Img_1' => $img1, 'Img_2' => $img2, 'Img_3' => $img3, 'Img_4' => $img4, 'Img_5' => $img5, 'Img_6' => $img6, 'Img_7' => $img7, 'Img_8' => $img8, 'Img_9' => $img9, 'Img_10' => $img10, 'Img_11' => $img11, 'Img_12' => $img12, 'Img_13' => $img13, 'Img_14' => $img14, 'Img_15' => $img15, 'Img_16' => $img16, 'Img_17' => $img17, 'Img_18' => $img18, 'Img_19' => $img19, 'Img_20' => $img20, 'Img_21' => $img21, 'Img_22' => $img22, 'Img_23' => $img23, 'Img_24' => $img24, 'Img_25' => $img25, 'Img_26' => $img26, 'Img_27' => $img27, 'Img_28' => $img28, 'Img_29' => $img29, 'Img_30' => $img30);
}
$stmt->close();
return ($row);
}
然后:
$id = $_GET['id'];
$kitties = checkImages($id);
if(is_array($kitties)){
foreach($kitties as $row){
$total = count(array_filter($row));
}
}
我会留下我的旧问题,以便其他人可以从我的错误中吸取教训。
我试图在sql查询中返回非空行数。每次我尝试,结果总是1.我试图改变一些事情,但它似乎仍然是1.
编辑:我想计算非空的查询行数。行(Img_#)包含图像的路径和文件名。
因此,例如,id 12存储了20个图像。对于存储的每个图像,位置和文件名存储在img_#字段之一中。因此,当我查询表格时,我想检查30个img_字段中有多少不是空的。
这是我的第一次尝试:
function checkImages($id)
{
global $mysqli;
$stmt = $mysqli->prepare("SELECT
Img_1,
Img_2,
Img_3,
Img_4,
Img_5,
Img_6,
Img_7,
Img_8,
Img_9,
Img_10,
Img_11,
Img_12,
Img_13,
Img_14,
Img_15,
Img_16,
Img_17,
Img_18,
Img_19,
Img_20,
Img_21,
Img_22,
Img_23,
Img_24,
Img_25,
Img_26,
Img_27,
Img_28,
Img_29,
Img_30
FROM kitties
WHERE
id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->store_result();
$num_returns = $stmt->num_rows;
$stmt->close();
if ($num_returns > 0)
{
return $num_returns;
}
else
{
return false;
}
}
第二个版本:
function checkImages($id)
{
global $mysqli;
$stmt = $mysqli->prepare("SELECT
Img_1,
Img_2,
Img_3,
Img_4,
Img_5,
Img_6,
Img_7,
Img_8,
Img_9,
Img_10,
Img_11,
Img_12,
Img_13,
Img_14,
Img_15,
Img_16,
Img_17,
Img_18,
Img_19,
Img_20,
Img_21,
Img_22,
Img_23,
Img_24,
Img_25,
Img_26,
Img_27,
Img_28,
Img_29,
Img_30
FROM kitties
WHERE
id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($img1, $img2, $img3, $img4, $img5, $img6, $img7, $img8, $img9, $img10, $img11, $img12, $img13, $img14, $img15, $img16, $img17, $img18, $img19, $img20, $img21, $img22, $img23, $img24, $img25, $img26, $img27, $img28, $img29, $img30);
while ($stmt->fetch()){
$row[] = array('Img_1' => $img1, 'Img_2' => $img2, 'Img_3' => $img3, 'Img_4' => $img4, 'Img_5' => $img5, 'Img_6' => $img6, 'Img_7' => $img7, 'Img_8' => $img8, 'Img_9' => $img9, 'Img_10' => $img10, 'Img_11' => $img11, 'Img_12' => $img12, 'Img_13' => $img13, 'Img_14' => $img14, 'Img_15' => $img15, 'Img_16' => $img16, 'Img_17' => $img17, 'Img_18' => $img18, 'Img_19' => $img19, 'Img_20' => $img20, 'Img_21' => $img21, 'Img_22' => $img22, 'Img_23' => $img23, 'Img_24' => $img24, 'Img_25' => $img25, 'Img_26' => $img26, 'Img_27' => $img27, 'Img_28' => $img28, 'Img_29' => $img29, 'Img_30' => $img30);
}
$num_returns = $stmt->num_rows;
$stmt->close();
return ($num_returns);
}
任何建议都将不胜感激。感谢。
答案 0 :(得分:0)
这不是真正的答案
由于您未提供表boats
架构而非kitties
架构,因此您要求的内容并不十分清楚。
所以我的猜测是:你对两个表都有唯一的id
索引。这意味着当您使用WHERE id = ?
查询时,mysql 必须返回1行,因为(正如我所提到的)id
是唯一的。
那你的问题是什么?您是否在这些表中有多个具有相同id
的记录?你为什么在问题中使用2个不同的表?
尝试澄清你的问题。