【问题标题】:echo results of SELECT CONCAT query?SELECT CONCAT 查询的回显结果?
【发布时间】:2013-01-19 04:09:27
【问题描述】:

所以,我正在尝试运行一个 SELECT CONCAT 查询,返回查询结果并基本上将它们显示在 .php 网页上。例如,如果我手动将以下 SQL 代码放入 PHPMyAdmin:

SELECT CONCAT(m.Name, ' ', p.Model, ' - ', p.StorageSize, ' - ', o.Name, ' - ', p.Price)
FROM phones p
JOIN manufacturer m
ON p.ManufacturerID = m.ManufacturerID
JOIN operatingsystem o
ON p.OSID = o.OSID

PHPMyAdmin 运行它并显示“Apple iPhone 5 - 16GB - iOS - 499.99。但是,我试图让它显示在 .php 页面上而不是仅仅通过 PHPMyAdmin 并且无法让它工作。我'我猜我需要使用某种 echo 命令,但是当我使用例如 echo $result 时,它要么在网页上根本不显示任何内容,要么有时显示“资源 id #3”。我的整个 PHP 代码如下:

<html>
<head>
<LINK rel="stylesheet" href="style.css">
<title>Phones | Mobiles Four You</title>
</head>

<body>
<div id="container"> 
<div id"header"><img src="images/logo.png" alt="Logo"/></div>
<div id="navbar">
<ul>
<li><a id=”nav-home” class=”first” href="index.php">Home</a></li>
<li><a id=”nav-phones” href="phones.php?sort=Make">Phones</a></li>
<li><a id=”nav-search” href="search.php">Search</a></li>
<li><a id=”nav-login” href="login.php">Login</a></li>
<li><a id=”nav-contact” class=”last” href="contact.php">Contact</a></li>
</ul>
</div>

<div id="content">
<h1>Mobile Phones</h1>
</div>


<?php
$con = mysql_connect("b*********", "*****", "*****");
if (!$con)
{
die('Could not connect: '  . mysql_error());
}

mysql_select_db("bg29li", $con);
$query = ("SELECT CONCAT(m.Name, ' ', p.Model, ' - ', p.StorageSize, ' - ', o.Name, ' -             ', p.Price)
FROM phones p
JOIN manufacturer m
ON p.ManufacturerID = m.ManufacturerID
JOIN operatingsystem o
ON p.OSID = o.OSID"); 

mysql_close($con);
?>
</body>
</html>

任何帮助都将不胜感激

【问题讨论】:

  • 0.Name后面的巨大差距是什么?也许这就是问题所在?
  • 当使用 select CONTACT() 时,使用一个别名,比如contact(blahblah) 作为短名称,那么你可以很容易地得到它
  • 我在您的代码中看不到 $result 变量,或者您在哪里调用 $query 字符串。

标签: php mysql sql join phpmyadmin


【解决方案1】:

给串联的名称一个别名,然后遍历行并回显它们:

mysql_select_db("bg29li", $con);
$query = ("SELECT CONCAT(m.Name, ' ', p.Model, ' - ', p.StorageSize, ' - ', o.Name, ' -             ', '£' , p.Price) AS Names
FROM phones p
JOIN manufacturer m
ON p.ManufacturerID = m.ManufacturerID
JOIN operatingsystem o
ON p.OSID = o.OSID"); 

$result = mysql_query($query);

while($row=mysql_fetch_array($result))
{
    // here you can get the values using $row['names']
    echo $row['names'];

} 

mysql_close($con);

但是,请停止使用 mysql_query 扩展并改用 PDO 或准备好的语句。

【讨论】:

  • @user1762928 确保您在查询中的SELECT CONCAT( ... ) AS names 中添加了别名AS names。您能告诉我您尝试的确切查询吗?
【解决方案2】:
$query = "SELECT CONCAT(m.Name, ' ', p.Model, ' - ', p.StorageSize, ' - ', o.Name, ' -             ', p.Price)  AS val
FROM phones p
JOIN manufacturer m
ON p.ManufacturerID = m.ManufacturerID
JOIN operatingsystem o
ON p.OSID = o.OSID"; 

$res  = mysql_query($query);

while($row = mysql_fetch_assoc($res)){
    print_r($row);
}

【讨论】:

  • mysql_* 不推荐使用 mysqli 或 PDO
  • 在while循环中写一个if条件if($row['val'] == "something"){$requ = $row['val'];}
  • 像这样更改查询并尝试,但我不确定是否可以工作$query = "SELECT CONCAT(m.Name, ' ', p.Model, ' - ', p.StorageSize, ' - ', o.Name, ' - &amp;pound;', p.Price) AS val
【解决方案3】:
    $query = ("SELECT CONCAT(m.Name, ' ', p.Model, ' - ', p.StorageSize, ' - ', o.Name, ' -             ', p.Price)
FROM phones p
JOIN manufacturer m
ON p.ManufacturerID = m.ManufacturerID
JOIN operatingsystem o
ON p.OSID = o.OSID");

这还不够,mysql_query($query) 需要被执行,否则它只是一个字符串变量,那么你将不得不使用 mysql_fetch_array 或 mysql_fetch_object 来获得结果

【讨论】:

    【解决方案4】:

    mysql_select_db("bg29li", $con);

    首先创建 sql 查询以字符串格式运行

    $query = "SELECT CONCAT(m.Name, ' ', p.Model, ' - ', p.StorageSize, ' - ', o.Name, ' - ', p.Price) 来自电话 p 加入制造商m ON p.ManufacturerID = m.ManufacturerID JOIN操作系统 ON p.OSID = o.OSID";

    之后运行这个查询,你会得到 $result 变量的结果

    $result = mysql_query($query);

    while ($row = mysql_fetch_array($result, MYSQL_NUM)) {

    printf("%s  ", $row[0]);  
    

    }

    【讨论】:

    • 它不会给你结果
    • 你需要使用mysql_fetch_*
    • 需要获取jay结果
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    相关资源
    最近更新 更多