Php mysql#u fetch#u数组不';t呈现SQL查询的期望值
在phpMyAdmin接口中,我运行以下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
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) ,')';