Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 连接表时的PDO fetch assoc_Php_Mysql_Pdo - Fatal编程技术网

Php 连接表时的PDO fetch assoc

Php 连接表时的PDO fetch assoc,php,mysql,pdo,Php,Mysql,Pdo,在连接表时,使用PDO获取assoc数组似乎不会显示所有结果列 <?php $stmt = $GLOBALS['db']->prepare(" SELECT * FROM printer , printermanufacturer , printermodel , colorprofile , papersize WHERE User = :userID AND printer.Manufacturer = printerma

在连接表时,使用PDO获取assoc数组似乎不会显示所有结果列

<?php
$stmt = $GLOBALS['db']->prepare("
SELECT * 
  FROM printer
     , printermanufacturer
     , printermodel
     , colorprofile
     , papersize 
 WHERE User = :userID 
   AND printer.Manufacturer = printermanufacturer.ID 
   AND printer.Model = printermodel.ID 
   AND printer.Colorprofile = colorprofile.ID 
   AND printer.papersize = papersize.ID
");

$stmt->bindValue(':userID', $userID, PDO::PARAM_INT);
$stmt->execute();
print_r($stmt->fetchAll(PDO::FETCH_ASSOC));
?>

这将产生一个关联数组,例如,
printermanufacturer.Name
printermodel.Name
,但它不是。只有一行名为Name。 有没有一种解决方案不需要重命名每一列,如
选择
printermanufacturer.Name作为pmName

谢谢

编辑:在重复问题中还有一个(未回答)问题,关于: 是否有办法自动将t2列标识为t2.col1、t2.col2(等) 这可能吗?

应该会有帮助

PDO::FETCH_NAMED:返回一个与PDO::FETCH_ASSOC格式相同的数组,但如果有多个同名列,则该键引用的值将是具有该列名的行中所有值的数组


请注意,我们在1992年停止以这种方式编写查询。来吧。加入我们。没有。总是选择你真正想要的列。我从来没有写过这样的查询,然后我看到一个女孩在我的工作场所做这样的查询。直到一周前我才知道这是可能的。我不知道她是从哪里学来的。我更喜欢使用post-1992
JOIN
语法,因为它使连接条件更接近相应的连接。如果使用旧的1989年“逗号样式”连接语法,则必须遍历WHERE子句,以确定哪些条件与每个连接相关。一些品牌的SQL数据库花了数年的时间来实现1992年的标准语法,在那之后的数年里,甚至直到今天,示例仍然是使用旧语法编写的。这个语法从来没有问题。我更喜欢自动联接功能:根据数据库的外键条件,从tabl1、tabl2自动联接中选择x、y、z。这将使生活更加轻松。但是语法真的不再被使用了。。。我会用JOIN。但我看不出有什么大的优势。