2016-10-04 76 views
0

我有一個連接到MySQL數據庫,並查找一些數據並寫入到文件中的PHP文件:限制PHP查詢搜索MySQL數據庫的非空行

<?php 
$dbc = mysql_connect('localhost', 'user', 'passwrd'); 
mysql_select_db('database', $dbc); 


$result = mysql_query("SELECT responses FROM ttable"); 
$to_encode = array(); 

while($row = mysql_fetch_assoc($result)) { 
    $to_encode[] = $row; 
} 

$file = 'par.txt'; 
file_put_contents($file, json_encode($to_encode)); 

?> 

這個文件與以下執行javascript函數:

var get_database_id = { 
function() { 
    $.getJSON('query.php', function(data) { 
    $.each(data, function(fieldName) { 
     $("#" + fieldName); 
    }); 
}); 
return 'done'; 
} 
}; 

到目前爲止一切正常,但被寫入文件,「par.txt」包含數據庫的表中的列「迴應」的所有行,而我只想要行,其中有數據。這是par.txt的樣子:

[{"responses":"{\"Q0\":\"2\",\"Q1\":\"sf\",\"Q2\":\"4\"}"},{"responses":""}{"responses":""},{"responses":""},{"responses":""},{"responses":""}, 

最後,這是一個巨大的文件,我想因爲我讀的文件,然後搜索它的響應削減規模。在上面的例子中,我只想選擇數據爲{"responses":"{\"Q0\":\"2\",\"Q1\":\"sf\",\"Q2\":\"4\"}的行,並跳過其他所有內容,直到遇到另一個包含數據的行。我該怎麼做呢?

+0

所以..你從數據庫轉儲數據到一個文本文件,所以你可以執行搜索? :) – Mjh

+0

@Mjh我猜這是因爲數據庫中的數據不是關係型的,它只是某個地方有一些JSON從它的外觀傾倒入它。 :-S – ADyson

回答

2

使用WHERE條件來表示響應不是空的。

所以您的查詢就會變成:

SELECT responses FROM ttable WHERE responses <> '' 

還要考慮切換到mysqli_ * API或更好的PDO,因爲mysql_ *不贊成使用API​​在php 7版本中刪除。

也學習準備語句,以避免SQL注入