2015-06-21 22 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