Php 来自PDO查询的SQL结果数组具有重复的值
我有一个mysql表,它有以下字段Php 来自PDO查询的SQL结果数组具有重复的值,php,mysql,pdo,Php,Mysql,Pdo,我有一个mysql表,它有以下字段 STUDENTID | FIRSTNAME | SURNAME | DOB | SCHOOLID 表单用于用户搜索一个学生,并输出所有具有匹配的名字和姓氏的学生 下面的SQL语句返回PDO fine $sqlstmnt2='从学生中选择*,其中firstName=:fname和姓氏=:sname和schoolID=:schoolID'; //将PDO语句准备为$query。。。 // ... $query->execute(); $\会话[
STUDENTID | FIRSTNAME | SURNAME | DOB | SCHOOLID
表单用于用户搜索一个学生,并输出所有具有匹配的名字和姓氏的学生
下面的SQL语句返回PDO fine
$sqlstmnt2='从学生中选择*,其中firstName=:fname和姓氏=:sname和schoolID=:schoolID';
//将PDO语句准备为$query。。。
// ...
$query->execute();
$\会话['FoundStudiors']=$query->fetchAll();
然而,当我将其传递到会话变量中的另一个PHP页面时,我对如何单独访问每个字段感到困惑。我有以下代码
foreach($\u会话['foundstudiors'][0]作为$found){
回声($发现);
}
这会输出找到的数据,但问题是它会输出两次,而且只是一个很长的数据字符串,无法很好地格式化。我的问题是:
为什么每个结果输出两次?
如何访问此数组中的各个字段(有点像FoundStudiors[0]['firstName']例如?根据文档,方法和接受一个
$fetch_style
参数。如果未设置,默认值为PDO::fetch_both
。这意味着获取的数组都将按位置(例如0、1、2)和列名(例如“firstName”
,“姓氏”
)引用字段
因此,默认情况下,获取的结果如下所示:
Array
(
[0] => Array
(
[name] => apple
[0] => apple
[colour] => red
[1] => red
)
[1] => Array
(
[name] => pear
[0] => pear
[colour] => green
[1] => green
)
[2] => Array
(
[name] => watermelon
[0] => watermelon
[colour] => pink
[1] => pink
)
)
要解决此问题,您需要使用PDO::fetch_COLUMN
作为fetch样式调用fetch函数(我想是这样的):
$query->execute();
$\会话['FoundStudiors']=$query->fetchAll(PDO::FETCH\列);
查询结果将返回并存储在结果对象中。因此,您必须使用xxxx\u fetch\u数组或xxxx\u fetch\u行对结果进行迭代。例如
$sql='SELECT * FROM table_name';
$result = mysqli_query($conn,$sql);
while($row=mysqli_fetch_array($result)){
echo $row['COLUMN_NAME'].'<br />';
}
$sql='SELECT*FROM table_name';
$result=mysqli\u查询($conn,$sql);
while($row=mysqli\u fetch\u数组($result)){
echo$row['COLUMN_NAME'].
;
}
您尚未包含相关的代码片段。您在何处以及如何设置$\u会话
?根据您的获取模式,默认值将返回一个混合数组,其中包含数字键和索引键,这两个键都包含相应的列值。您能否向我们显示var\u导出($\u会话['foundstuds'][0])
?