php - 如果列不存在,Mysql 选择另一个表

标签 php mysql

我想从我的数据库创建 XML。数据保存在不同的表中。这就是为什么我想从不同的表列中进行选择(如果表中不存在)。

如何编写 Select 来检查表是否具有我需要的列?

$sql = "SELECT products_quantity FROM ".$config['table_name'], $config['table_name2'].products_description;

这是完整的代码

<?php
//database configuration
$config['mysql_host'] = "localhost";
$config['mysql_user'] = "root";
$config['mysql_pass'] = "root";
$config['db_name']    = "sqltoxml";
$config['table_name'] = "products";
$config['table_name2'] = "products_description";


//connect to host
mysql_connect($config['mysql_host'],$config['mysql_user'],$config['mysql_pass']);
//select database
@mysql_select_db($config['db_name']) or die( "Unable to select database");

$xml          = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$root_element = $config['table_name']."s";
$xml         .= "<$root_element>";

//select all items in table
$sql = "SELECT products_id FROM ".$config['table_name'], products_description FROM ".$config['table_name2'];


$result = mysql_query($sql);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

if(mysql_num_rows($result)>0)
{
   while($result_array = mysql_fetch_assoc($result))
   {
      $xml .= "<".$config['table_name'].">";

      //loop through each key,value pair in row
      foreach($result_array as $key => $value)
      {
         //$key holds the table column name
         $xml .= "<$key>";

         //embed the SQL data in a CDATA element to avoid XML entity issues
         $xml .= "<![CDATA[$value]]>";

         //and close the element
         $xml .= "</$key>";
      }

      $xml.="</".$config['table_name'].">";
   }
}

    //close the root element
$xml .= "</$root_element>";

//send the xml header to the browser
header ("Content-Type:text/xml");

//output the XML data
echo $xml;

$fn=  "export.xml";
$fp = fopen($fn,"wb");
$write = fwrite($fp,$xml);
fclose($fp);
?>

最佳答案

这两个表的架构是什么?如果 table2 引用了 table1 中的产品 ID,则可以连接这两个表。利用 IF 指定如果某个字段包含值则返回该字段,否则返回另一个字段。

SELECT IF(table1.product_quantity,table1.product_quantity,table2.product_description)
FROM table1
JOIN table2 ON table1.id = table2.prodct_id;

这是关系数据库允许用户从多个表中获取数据的一种方式。必须有一些匹配(在列上)来表明您想要从另一个表中调用与第一个表中的行相关的行,除非提供了其他匹配条件。

关于php - 如果列不存在,Mysql 选择另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591841/

相关文章:

php - Highcharts 中柱形图的 3 级向下钻取?

mysql - 在 MySQL 中选择随机最大值

php - SQL查询条件不起作用

php - 如何制作表格并保存url和html代码?

php - 创建内部包含不同变量的 php 副本

mysql - 十月 CMS - SQL 请求与 sql_mode=only_full_group_by 不兼容

php - 我的 Zend Framework 'quoting' 一团糟

php - 在 Bootstrap 模式中提供 php 图像搜索结果

php - 如何在 Laravel 8 中通过 Controller 将页面标题传递给 View ?

php - 在 php 中使用一个函数得到不同的结果