Php mysql#u fetch#u数组不';t呈现SQL查询的期望值

Php mysql#u fetch#u数组不';t呈现SQL查询的期望值,php,mysql,select,mysqli,Php,Mysql,Select,Mysqli,在phpMyAdmin接口中,我运行以下SQL查询: SELECT id FROM table WHERE family = '1' AND type = 'B1' 并收到以下结果: “1”、“18546269”、“51534064”是正确的 然后我用PHP编写了以下代码: $query = "SELECT id FROM table WHERE family = '1' AND type = 'B1'"; $result = mysql_query($query); $array = mys

在phpMyAdmin接口中,我运行以下SQL查询:

SELECT id FROM table WHERE family = '1' AND type = 'B1'
并收到以下结果:

“1”、“18546269”、“51534064”是正确的

然后我用PHP编写了以下代码:

$query = "SELECT id FROM table WHERE family = '1' AND type = 'B1'";
$result = mysql_query($query);
$array = mysql_fetch_array($result);
echo '(', implode(',',$array) ,')';
但得到以下结果: (1,1)这是我没想到的

我以为(11854626951534064)会显示出来。 然后,我编写了以下代码来验证应该显示什么:

print_r ($array);
非常惊讶的是,这些值是:

Array ( [0] => 1 [id] => 1 ).
最后我写道:

while($array = mysql_fetch_array($result)) {
        echo $array['id'],',';
}
正如所料,我们收到的正是:

11854626951534064

我不能使用它,因为我需要一个像这样的字符串:(11854626951534064)。 事实上,我“只是”需要一个变量,该变量为我提供与在phpMyAdmin中运行的SQL查询相同的值。 我真的很困惑,如果你们中有人能帮我,那就太好了。 使用mysqli的解决方案也将不胜感激。:-)

如以下文件所述:

返回值 返回与获取的行相对应的字符串数组,如果没有更多行,则返回
FALSE
。返回数组的类型取决于如何定义
result\u type
。通过使用
MYSQL\u all
(默认),您将获得一个包含关联索引和数字索引的数组

[ deletia ] [deletia] 示例#2 mysql_fetch_array()和mysql_NUM

也就是说,该函数只返回一行,默认情况下是一个数组,由resultset中的关联列和数字索引列组成。您希望使用合适的
result\u type
参数(如上所示)对函数进行多次调用


基本上,您可以启动一个变量,将所有ID放入其中,删除最后一个逗号,添加括号,就这样。

mysql\u fetch\u数组获取行数组,而不是列数组。这意味着,如果您有ID和name,那么获取的数组将在每一行上包含ID和name

对代码进行相当简单的修改就可以解决这个问题

$i=0;
$data=array();
while($array = mysql_fetch_array($result)) {
     $data[$i]=$array['id'];
     $i++;
}
echo '(', implode(',',$data) ,')';

感谢您的回答,但是使用while($array=mysql\u fetch\u array($result,mysql\u NUM)){printf($array['0'].','));给我以下结果185462695134064,第一条记录不知何故没有出现。顺便问一下,我怎么能把它用作变量?你忘了增加$I。请加上它,这样我就可以更新你的答案。@ChosenWann谢谢,对不起。我们必须修复以下问题:$data[$I]=$array['id'];(在我之前缺少$I)但是现在我只收到select(51534064)@user3499881编辑的最后一条记录。你是否用$I++添加了下一行?我后来添加了它(在前面的评论之后),所以这可能是只显示最后一条记录的问题。现在我也用$I++编写,它看起来更好。但它没有显示第一条记录。我修改了查询(现在没有type=B1)来接收更多的值,现在我们有12个值,但是第一条记录仍然丢失。这就是为什么我说mysqli解决方案将非常感谢。谢谢你的回答!@user3499881编辑到MySQLiIt可以工作,但我们必须更改$ids=rtrim($string,,');使用它:$ids=rtrim($ids,,'));不幸的是,我没有15分的声望可以投票!一旦我达到这个目标,你就会收到我的选票。;-)
$query = "SELECT id FROM table WHERE family = '1' AND type = 'B1'";
$result = mysqli_query($link, $query);
$ids = '';
while($row = mysqli_fetch_array($result)) $ids .= $row['id'].',';

// Filter the text a bit
$ids = rtrim($string, ',');
$ids = '('.$ids.')';
echo $ids;
$i=0;
$data=array();
while($array = mysql_fetch_array($result)) {
     $data[$i]=$array['id'];
     $i++;
}
echo '(', implode(',',$data) ,')';