如果MYSQL字段A等于MYSQL字段B,则打印MYSQL字段C.

时间:2012-11-17 08:15:18

标签: php mysql

我想打印一个名为'res_properties'的表的内容,以获得关于我的投资组合的概述,但不知道语法(PHP知道我,但我不知道PHP ...):

我有一个名为'res_properties'的表和一个名为'location_id'的列 我有另一个名为'res_location'的表和2个名为'id'和'slug'的列 列'slug'包含位置的人类可读内容

样品 'id'是“3”等于“California”('slug'的内容) 'id'是“4”等于“Virginia”('slug'的内容) 等

打印时我需要查找表'res_location'并且当'location_id'等于'id'时 然后将'id'替换为'slug'的内容(或将'slug'的内容移动到一个新字段中,例如'location_name'(25个字符)。并打印该字段。

到目前为止,我的代码是这样的,我感谢任何帮助。非常感谢:

<html>
<head>
<title>Portfolio</title>
</head>
<link rel="stylesheet" type="text/css" href="../scripts/css/formate.css" />
<body>

<?php 
 // Connects to Database 
 mysql_connect("localhost","user","passw") or die(mysql_error()); 
 mysql_select_db("db_name") or die(mysql_error()); 
 $data = mysql_query("SELECT * FROM res_properties"); 
 $location = mysql_query("SELECT * FROM res_locations")

 or die(mysql_error()); 

 Print "<table border cellpadding=3>"; 
 Print "<br><h3>Portfolio</h3><p><br>"; 
   Print "<table border cellpadding=3>"; 
   Print "<tr align='left'><th width=130>Villa Name</th><th width=40>Beds</th><th width=40>Baths</th><th width=60>Sleeps</th><th width=40>Location</th><th width=40>Loc-ID</th><th width=300 >Site URL</th></tr>"; 

   while($info2 = mysql_fetch_array( $location )) 
   while($info = mysql_fetch_array( $data )) 

 { 

 Print "<tr>"; 
 Print "<td>".$info['ref_id'] . "</td> "; 
 Print "<td>".$info['bedrooms'] . " </td>"; 
 Print "<td>".$info['bathrooms'] . " </td>"; 
 Print "<td>".$info['max_occupants'] . " </td>"; 
 Print "<td>".$info2['slug'] . " </td>"; 
 Print "<td>".$info2['id'] . " </td>"; 

// here I want to print a clickable URL but some syntax error:
// Print "<td>" http://www.domain_name.com/'.$info['slug'] .'.html;

// when using the echo command it works fine like this, but doesn't output a clickable URL:
// echo 'http://www.domain_name.com/'.$info['slug'] .'.html' . "<br />"; 


 } 
 Print "</table>"; 
 ?> 

</body>
</html>

3 个答案:

答案 0 :(得分:0)

很难阅读你问题的正文,但如果标题是准确的,那么这可能是你想要的。

SELECT IF(table.fieldA = table.fieldB, table.fieldC, NULL) FROM table;

格式为IF(条件,如果为true则输出,如果为false则输出)

现在,如果我的答案是在正确的轨道上,但不是很正确,你告诉我,我会更新它。

答案 1 :(得分:0)

在mysql中使用联接,那么你不必担心PHP脚本,使用以下sql查询来获取数据

$data = mysql_query("select
rl.id,
rl.slug
from res_location as rl
join res_properties as rp on rp.location_id=rl.id");

Follow my Blog at w3easystep.info

答案 2 :(得分:0)

据我所知,您要打印表res_properties和res_locations的内容。表res_properties包含位于特定状态的属性。在输出中,您需要打印属性以及属性所在的状态。最好的方法是使用res_properties的column_id列和res_locations的列id,在单个sql语句中join表res_properties和res_locations:

$data = mysql_query("SELECT * FROM res_properties t1 INNER JOIN res_locations t2 ON t1.location_id = t2.id");

使用join语句,mysql返回一个包含与单个属性对应的整个信息的连接表。现在迭代$ data并打印值:

print "<table>";
while($info = mysql_fetch_array( $data )) {
   print "<tr>"; 
   print "<td>" . $info['ref_id'] . "</td> "; 
   print "<td>" . $info['bedrooms'] . "</td>"; 
   print "<td>" . $info['bathrooms'] . "</td>"; 
   print "<td>" . $info['max_occupants'] . "</td>"; 
   print "<td>" . $info['slug'] . "</td>"; 
   print "<td>" . $info['id'] . "</td>";
   print "<td>http://www.domain_name.com/" . $info['slug'] . ".html</td>";
}
print "</table>";

要更好地理解php,请尝试考虑两个连续while循环的语义:

while($info2 = mysql_fetch_array( $location )) 
while($info = mysql_fetch_array( $data )) 
{ 

还要注意在print语句中使用正确的php语法,以避免语法错误!例如,要打印纯字符串值,必须使用parantheses:

print "hello world";

我希望我的代码没有语法错误,我回答了你的问题。