2013-05-16 45 views
0

我想从我的数据库创建XML。数据保存在不同的表中。这就是为什么我想从不同的表格列中选择表中是否不存在。如果列不存在,Mysql会选择另一个表格

如何编写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); 
?> 

回答

0

什么是这两个表的架构?如果table2引用了table1中的产品ID,则可以加入这两个表。使用IF指定返回一个字段,如果它包含一个值,或者oterhwise另一个字段。

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

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

相关问题