亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我的我的左聯接在 PHP 頁面中首先返回錯誤,但在 MYSQL 命令行中返回正確的結果

我的我的左聯接在 PHP 頁面中首先返回錯誤,但在 MYSQL 命令行中返回正確的結果

PHP
慕哥6287543 2022-09-12 09:13:29
我們在主MySQL表(命名對象)中添加了兩列,一列表示數量,一列表示單位ID。如果數量和/或單位未知,則這些列設置為 NULL。我們希望將此表與單位類型表聯接在一起,以顯示單位的名稱(磅、頁、克等)。當我在MYSQL的命令行客戶端中運行選擇時,它返回預期的結果。當我的 PHP 頁面運行查詢時,第一行顯示來自聯接錯誤端的值。示例:要連接的表是具有這些定義的對象和單位類型mysql> show create table objects;CREATE TABLE `objects` (  `objId` int NOT NULL AUTO_INCREMENT,  `name` varchar(100) DEFAULT NULL,  `description` varchar(250) DEFAULT NULL,  `quantity` int DEFAULT NULL,  `unitid` int DEFAULT NULL,  `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,  `modify_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (`objId`),  KEY `unitid` (`unitid`),  CONSTRAINT `objects_ibfk_1` FOREIGN KEY (`unitid`) REFERENCES `unittypes` (`unitId`) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB AUTO_INCREMENT=4735 DEFAULT CHARSET=utf8和:mysql> show create table unittypes;CREATE TABLE `unittypes` (  `unitId` int NOT NULL AUTO_INCREMENT,  `name` varchar(50) DEFAULT NULL,  `description` varchar(50) DEFAULT NULL,  `create_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP,  `modify_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (`unitId`),  UNIQUE KEY `name` (`name`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8示例行:Unittypes:+--------+------+--------------+-| unitId | name | description  | +--------+------+--------------+-|      1 | Each | Each         | Objects:+-------+---------------------------------------+-------------+----------+--------+| objId | NAME                                  | description | quantity | unitid | +-------+---------------------------------------+-------------+----------+--------+|  1018 | UNKNOWN cables                        | NULL        |   NULL   |  NULL  |  |  3466 | UNKNOWN replies                       | NULL        |   NULL   |  NULL  | 結果集有 3 行。單位類型沒有匹配行時的示例:我使用連接語法得到相同的結果左連接單元類型 u on o.unitid = u.單元 id我希望相同的查詢在兩個示例中的行為方式相同。我本來會猜測命令行和PHP只是將字符串傳遞給mySQL進行處理,但顯然我沒有看到一些差異。PHP如何傳遞查詢有什么奇怪的事情嗎?MYsql是否無法正確處理通過該接口的連接;代碼是否錯誤(無需連接即可工作)?
查看完整描述

1 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

您有兩個名為 的列。第二個將覆蓋第一個。name

您應將它們別名為具有不同的名稱。select `o`.`name` as `o_name` ...

在你的情況下,只有第一行受到影響的原因是因為你用來獲取它,但隨后又得到其他行(并且有效,因為它完全忽略了列名)fetch_assocfetch_rowfetch_row


查看完整回答
反對 回復 2022-09-12
  • 1 回答
  • 0 關注
  • 95 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號