2016-12-05 24 views
0

我面臨mysqli select查詢的問題。 我使用的是所謂的參與者,並具有以下字段的表:爲什麼只有一些mysqli查詢的工作?

id int(11) AI PK 
name varchar(255) 
surname varchar(255) 
birth varchar(32) 
sex varchar(32) 
email varchar(255) 
telephone varchar(32) 
club varchar(255) 
startingGroup int(2) 

這是一個PHP文件(稱爲select.php):

$connection = mysqli_connect("localhost", "$user", "$pass", "$db_name"); 

$query = "SELECT id, name, surname FROM participant WHERE NOT 0"; 

if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

if (!mysqli_query($connection, $query)) { 
    printf("Errormessage: %s\n", mysqli_error($connection)); 
} 

$result = mysqli_query($connection, $query); 
$arr = array(); 
if(mysqli_num_rows($result) != 0) { 
    while($row = mysqli_fetch_assoc($result)) { 
     $arr[] = $row; 
    } 
} 
mysqli_close($connection); 
echo $json_info = json_encode($arr); 

稍後由AngularJS在叫:

$http.post("select.php").success(function(data){ 
console.log(data); 
$scope.newparticipants = jsonFilter(data); 
console.log($scope.newparticipants); 
}); 

第一個console.log返回的值爲'undefined',第二個爲「」。當我改變我的查詢來選擇'id'時,整個事情都起作用,數據可見。任何猜測爲什麼是這樣?

+0

*「返回的值是'undefined'」* - undefined「what」? *「任何猜測?」 - - 沒有。 –

+0

*「與UNION ALL和COUNT(\ *)」* - 那是哪裏? –

+0

你有一列不存在 – Hogan

回答

0

它發生在數據庫中有一些編碼在utf8_general_ci中的變音符號。我對於發生了什麼事情一無所知,因爲有些查詢是正確的,有些則沒有。從特定範圍選擇ID我收到了正確的結果。選擇旁邊的範圍 - 我變得不確定。我發現很難發現問題出在編碼上(只有一些行包含這些變音符號)。

如果您處於類似的情況 - 檢查您的數據庫是否有一些非標準的編碼。如果是在代碼中定義它,只需打開一個數據庫連接之後,例如:

(程序風格)

mysqli_set_charset($connection,"utf8"); 

(面向對象)

$mysqli->set_charset("utf8") 

謝謝大家的努力解決這個問題。