2015-06-21 27 views
0

我有麻烦试图输出我想要的方式MySQL的搜索MySQL的搜索结果。我不能有很多搜索的找到答案,我的具体问题还没有在任何地方,我希望有人在这个论坛会愿意帮助!我从逻辑上看是一个两步过程。我怎样才能回到那里只有非空条目列显示

首先,我想执行一个MySQL的搜索中,搜索条件选择了其中一个特定的列有数据表中的行:

SELECT * 
FROM `mytable` 
WHERE column3 = 'yes' 

这给我的表的子集只含有“是”行在第3栏中。现在

,第二步我想从不包含任何信息,该子集删除表中的所有列(即,为空)。我敢肯定,这很容易让一个职业,而是试图削减的“空列”被绊倒我,似乎并没有被网上回答。您的帮助将不胜感激!

+0

SQL查询具有预定义的一组列,因此查询不能包含可变数量的列。你可以做你想做的事情,但是你需要使用动态SQL,这可能会导致这个问题的矫枉过正。只需删除PHP中的值。 –

+0

恕我问为什么你关心与否COL6 7和11仅仅包含空值 – Drew

+0

我想删除“空”列,以便最终表输出到网页前端是手持设备体积更小,更合适。 – Shane

回答

0

进一步挖掘后,我终于认识到,虽然您可以轻松过滤使用MySQL数据的某些行,对数据的某些列过滤动态则是另一回事。我曾假设列可以像行一样过滤。我在2011年找到了答案,以类似的问题由蓝色描述此:https://stackoverflow.com/a/4748682/5033595

现在,我理解这个概念比较好,我还需要更多的信息来构建,将完成什么是蓝色的链接描述的代码。如果我自己想出这个问题,我会编辑这个答案。相反,如果其他人愿意为代码提供答案,我将不胜感激。


好的,对不起,谢谢大家的建议。在探索互联网论坛并尝试不同的选择之后,我终于发现了一个解决方案。在这个解决方案中,关键是使用array_filter()来确定数据是否包含在数组中,或者是否为空。这适用于1- dimensionnal阵列,所以我首先移动MySQL数据的每一列到它自己的1-dimensionnal阵列和所使用的array_filter()以决定哪些列将在HTML表格公布的工具。代码和输出如下。享受...

CODE>>>>>>>>>>>>>>>>>>>>>>>>>> 

<?php 

//STEP 1: Making and confirming a connection to the Database>>>>>>>>>>>>>>>>>>>>>>>>>> 


echo "STEP 1: MAKING A CONNECTION TO THE MYSQL DATABASE...<BR><BR>"; 


//make connection 
$db = mysql_connect("localhost","root","urpassword"); 
if (!$db) { 
die("Database connection failed miserably: " . mysql_error()); 
} echo "Connected successfully<BR>"; 


//select database 
$db_select = mysql_select_db("mydatabase",$db); 
if (!$db_select) { 
die("Database selection also failed miserably: " . mysql_error()); 
} echo "Database selected successfully<BR>"; 


//query 
$result = mysql_query("SELECT * FROM employees2", $db); 
if (!$result) { 
die("Database query failed: " . mysql_error()); 
} echo "Database queried successfully<BR>"; 


//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 


//STEP 2 OUTPUTTING THE MYSQL SEARCH OF THE WHOLE DATABASE INCLUDING EMPTY COLUMN>>>>>>>>>>>>>>>>>>>>>>>>>>>> 

?> 



<HTML> 
<HEAD> 
<TITLE>Only showing table columns containing data</TITLE> 
</HEAD> 

<BODY> 

<BR><p>STEP 2: PLACING THE MYSQL TABLE INTO AN HTML TABLE</P><BR> 

<TABLE width="600" border="1" cellpadding="1" cellspacing="1"> 


<TR> 
<TH>Name</TH> 
<TH>Age</TH> 
<TH>Position</TH> 
<TH>Height</TH> 
<TH>Salary</TH> 

</TR> 

<?php 

while ($row=mysql_fetch_assoc($result)) { 

echo "<TR>"; 
echo "<TD>".$row['Name']."</TD>"; 
echo "<TD>".$row['Age']."</TD>"; 
echo "<TD>".$row['Position']."</TD>"; 
echo "<TD>".$row['Height']."</TD>"; 
echo "<TD>".$row['Salary']."</TD>"; 
echo "</TR>"; 

} //end while 

?> 
</TABLE> 

<!-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< --> 


<?PHP 

//STEP 3 Put mysql database into 2 dimension array: I didn't know my mysql >search wasn't in an array format already!!>>>>>>>>>>>>> 

echo "<BR><BR>STEP 3: CONVERTING THE MYSQL TABLE INTO A 2-DIMENSIONNAL ARRAY<BR><BR>"; 


$query = mysql_query("SELECT * FROM employees2", $db); 

$results = array(); 

while($line = mysql_fetch_assoc($query)){ 
$results[] = $line; 
} 

print_r($results); 

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 


//STEP 4 - Fetching each column as its own array>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 

echo "<BR><BR><BR>STEP 4: FETCHING EACH ARRAY COLUMN AS ITS OWN ARRAY"; 


$query = mysql_query("SELECT * FROM employees2", $db); 

$results = array(); 

while($line = mysql_fetch_assoc($query)){ 
$results[] = $line; 
$Name = array_column($results, 'Name'); 
$Age = array_column($results, 'Age'); 
$Position = array_column($results, 'Position'); 
$Height = array_column($results, 'Height'); 
$Salary = array_column($results, 'Salary'); 

} 

echo "<BR><BR>"; 
print_r($Name); 
echo "<br>"; 
print_r($Age); 
echo "<br>"; 
print_r($Position); 
echo "<br>"; 
print_r($Height); 
echo "<br>"; 
print_r($Salary); 
echo "<br>"; 

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 


//STEP 5 - Identifying if individual column arrays contain data>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 

echo "<BR><BR>STEP 5: CONFIRMING THAT YOU CAN IDENTIFY IF A COLUMN SEPARATED INTO ITS OWN ARRAY IS EMPTY<BR><BR>"; 

$query = mysql_query("SELECT * FROM employees2", $db); 

$results = array(); 

while($line = mysql_fetch_assoc($query)){ 
$results[] = $line; 
$Name = array_column($results, 'Name'); 
$Age = array_column($results, 'Age'); 
$Position = array_column($results, 'Position'); 
$Height = array_column($results, 'Height'); 
$Salary = array_column($results, 'Salary'); 
} 

if(array_filter($Name)) { 
echo "contains at least one non-empty element<BR>";} else echo "is empty<BR>"; 
if(array_filter($Age)) { 
echo "contains at least one non-empty element<BR>";} else echo "is empty<BR>"; 
if(array_filter($Position)) { 
echo "contains at least one non-empty element<BR>";} else echo "is empty<BR>"; 
if(array_filter($Height)) { 
echo "contains at least one non-empty element<BR>";} else echo "is empty<BR>"; 
if(array_filter($Salary)) { 
echo "contains at least one non-empty element<BR>";} else echo "is empty<BR>"; 
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

?> 

<!-- STEP 6 - Creating table that only displays columns with data>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> --> 

<BR><p>STEP 6: CREATING AN HTML TABLE THAT ONLY DISPLAYS COLUMNS WITH DATA</P><BR> 

<TABLE width="500" border="1" cellpadding="1" cellspacing="1"> 

<?php 
$query = mysql_query("SELECT * FROM employees2", $db); 

$results = array(); 

while($line = mysql_fetch_assoc($query)){ 
$results[] = $line; 
$Name = array_column($results, 'Name'); 
$Age = array_column($results, 'Age'); 
$Position = array_column($results, 'Position'); 
$Height = array_column($results, 'Height'); 
$Salary = array_column($results, 'Salary'); 
} 

echo "<TR>"; 
if(array_filter($Name)) {echo "<TH>Name</TH>";} 
if(array_filter($Age)){echo "<TH>Age</TH>";} 
if(array_filter($Position)){echo "<TH>Position</TH>";} 
if(array_filter($Height)){echo "<TH>Height</TH>";} 
if(array_filter($Salary)){echo "<TH>Salary</TH>";} 

echo "</TR>"; 

$query = mysql_query("SELECT * FROM employees2", $db); 

while($line = mysql_fetch_assoc($query)){ 

echo "<TR>"; 

if(array_filter($Name)) {echo "<TD>".$line['Name']."</TD>";} 
if(array_filter($Age)) {echo "<TD>".$line['Age']."</TD>";} 
if(array_filter($Position)) {echo "<TD>".$line['Position']."</TD>";} 
if(array_filter($Height)) {echo "<TD>".$line['Height']."</TD>";} 
if(array_filter($Salary)) {echo "<TD>".$line['Salary']."</TD>";} 


echo "</TR>"; 

} 

?> 


</TABLE> 
<BR><BR><BR><BR> 

</BODY> 

</HTML> 

<?php 
//closing mysql database 
mysql_close($db); 
?> 

CODE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 




OUTPUT>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 

STEP 1: MAKING A CONNECTION TO THE MYSQL DATABASE... 

Connected successfully 
Database selected successfully 
Database queried successfully 

STEP 2: PLACING THE MYSQL TABLE INTO AN HTML TABLE 

Name Age  Position Height Salary 
Chris Mogan 25 Assistant Programmer  170000 
Emily Grant 25 Accountant  120000 
James Daniel 27 Lead Programmer  210000 
Jessica Pam 28 Group Head  250000 
Mike Pablo 23 Head Designer  200000 
Nick Meyers 24 Assistant Designer  150000 


STEP 3: CONVERTING THE MYSQL TABLE INTO A 2-DIMENSIONNAL ARRAY 

Array ([0] => Array ([Name] => Chris Mogan [Age] => 25 [Position] => Assistant Programmer [Height] => [Salary] => 170000) [1] => Array ([Name] => Emily Grant [Age] => 25 [Position] => Accountant [Height] => [Salary] => 120000) [2] => Array ([Name] => James Daniel [Age] => 27 [Position] => Lead Programmer [Height] => [Salary] => 210000) [3] => Array ([Name] => Jessica Pam [Age] => 28 [Position] => Group Head [Height] => [Salary] => 250000) [4] => Array ([Name] => Mike Pablo [Age] => 23 [Position] => Head Designer [Height] => [Salary] => 200000) [5] => Array ([Name] => Nick Meyers [Age] => 24 [Position] => Assistant Designer [Height] => [Salary] => 150000)) 


STEP 4: FETCHING EACH ARRAY COLUMN AS ITS OWN ARRAY 

Array ([0] => Chris Mogan [1] => Emily Grant [2] => James Daniel [3] => Jessica Pam [4] => Mike Pablo [5] => Nick Meyers) 
Array ([0] => 25 [1] => 25 [2] => 27 [3] => 28 [4] => 23 [5] => 24) 
Array ([0] => Assistant Programmer [1] => Accountant [2] => Lead Programmer [3] => Group Head [4] => Head Designer [5] => Assistant Designer) 
Array ([0] => [1] => [2] => [3] => [4] => [5] =>) 
Array ([0] => 170000 [1] => 120000 [2] => 210000 [3] => 250000 [4] => 200000 [5] => 150000) 


STEP 5: CONFIRMING THAT YOU CAN IDENTIFY IF A COLUMN SEPARATED INTO ITS OWN ARRAY IS EMPTY 

contains at least one non-empty element 
contains at least one non-empty element 
contains at least one non-empty element 
is empty 
contains at least one non-empty element 

STEP 6: CREATING AN HTML TABLE THAT ONLY DISPLAYS COLUMNS WITH DATA 

Name Age Position Salary 
Chris Mogan 25 Assistant Programmer 170000 
Emily Grant 25 Accountant 120000 
James Daniel 27 Lead Programmer 210000 
Jessica Pam 28 Group Head 250000 
Mike Pablo 23 Head Designer 200000 
Nick Meyers 24 Assistant Designer 150000 

OUTPUT<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
0
SELECT * FROM mytable WHERE column3 IS NOT NULL; 

或者你是什么意思?

SELECT * FROM mytable WHERE column3 = 'yes' AND column1 IS NOT NULL; 
+0

这不是他正在谈论的 – Drew