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

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

當我嘗試繪制查詢表時,我的 php 代碼出錯

當我嘗試繪制查詢表時,我的 php 代碼出錯

PHP
炎炎設計 2023-11-03 21:33:52
由于我如何在表格中獲取信息,我需要建立一個聯合來顯示交叉引用。Tablebrand1 是表的名稱。2 和 3Tablebrand1CODE    CROSSREFERENCEA15     SAMSUNG A10A16     SAMSUNG A20A63     SAMSUNG A30Tablebrand2CODE    CROSSREFERENCEX63     SAMSUNG A10X64     SAMSUNG A20X65     SAMSUNG A30Tablebrand3CODE    CROSSREFERENCETOP99   SAMSUNG A10TOP98   SAMSUNG A20TOP97   SAMSUNG A30SQL查詢(SELECT "Tablebrand1" AS `brand`, CROSSREFERENCE as `code`    FROM Tablebrand1 WHERE CROSSREFERENCE = 'SAMSUNG A10')UNION (SELECT "Tablebrand2" AS `brand`, CROSSREFERENCE as `code`    FROM Tablebrand2 WHERE CROSSREFERENCE = 'SAMSUNG A10')UNION(SELECT "Tablebrand3" AS `brand`, CROSSREFERENCE as `code`    FROM Tablebrand3 WHERE CROSSREFERENCE = 'SAMSUNG A10');查詢正確地顯示了它,但是當嘗試在 php 中顯示它時,我收到一個來自查詢的錯誤,因為如果我修改它以進行更簡單的查詢,它會正確地顯示數據。<?phpecho "<table style='border: solid 1px black;'>";echo "<tr><th>brand</th><th>code</th></tr>";class TableRows extends RecursiveIteratorIterator {  function __construct($it) {    parent::__construct($it, self::LEAVES_ONLY);  }  function current() {    return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";  }  function beginChildren() {    echo "<tr>";  }  function endChildren() {    echo "</tr>" . "\n";  }}$servername = "localhost";$username = "user";$password = "pass";$dbname = "dbname";try {  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  $stmt = $conn->prepare("((SELECT "Tablebrand1" AS `brand`, CROSSREFERENCE as `code`    FROM Tablebrand1 WHERE CROSSREFERENCE = 'SAMSUNG A10')UNION (SELECT "Tablebrand2" AS `brand`, CROSSREFERENCE as `code`    FROM Tablebrand2 WHERE CROSSREFERENCE = 'SAMSUNG A10')UNION我的代碼如下,我對 php 和 union 的了解很少。
查看完整描述

1 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

您沒有說明錯誤消息是什么,但一個明顯的錯誤是您使用的引號沒有被轉義。(另外,在查詢開始時您有太多的引號( "((SELECT...) 因此您需要像這樣轉義查詢中的引號


$stmt = $conn->prepare("

  (SELECT \"Tablebrand1\" AS `brand`, CROSSREFERENCE as `code`

   FROM Tablebrand1 WHERE CROSSREFERENCE = 'SAMSUNG A10')

  UNION 

  (SELECT \"Tablebrand2\" AS `brand`, CROSSREFERENCE as `code`

   FROM Tablebrand2 WHERE CROSSREFERENCE = 'SAMSUNG A10')

  UNION

  (SELECT \"Tablebrand3\" AS `brand`, CROSSREFERENCE as `code`

   FROM Tablebrand3 WHERE CROSSREFERENCE = 'SAMSUNG A10');"

);

或者,您可以在查詢中使用單引號,而不是像這樣的雙引號


$stmt = $conn->prepare("

  (SELECT 'Tablebrand1' AS `brand`, CROSSREFERENCE as `code`

   FROM Tablebrand1 WHERE CROSSREFERENCE = 'SAMSUNG A10')

  UNION 

  (SELECT 'Tablebrand2' AS `brand`, CROSSREFERENCE as `code`

   FROM Tablebrand2 WHERE CROSSREFERENCE = 'SAMSUNG A10')

  UNION

  (SELECT 'Tablebrand3' AS `brand`, CROSSREFERENCE as `code`

   FROM Tablebrand3 WHERE CROSSREFERENCE = 'SAMSUNG A10');"

);


查看完整回答
反對 回復 2023-11-03
  • 1 回答
  • 0 關注
  • 190 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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