2016-09-26 38 views
1

我想從定義值中選擇所有行作爲相同的用戶名。當我嘗試從定義值中選擇所有行用戶名

$db->query("SELECT * FROM data WHERE username = $username") 

它不工作,並得到「同時檢索數據時出現錯誤」。所以 我

$db->query("SELECT * FROM data WHERE(username='".intval($username)."')") 

再試一次,它的工作找到,但我被困在獲得「數據庫爲空」

<?php 

$response = array(); 
if(isset($_GET['username'])){ 

$username = $_GET['username']; 

require_once __DIR__ . '/db_config.php'; 
$db = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE); 

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

if($result = $db->query("SELECT * FROM data WHERE(username='".intval($username)."')"){ 

    $rowCount = $result->num_rows; 
    if($rowCount > 0){ 
     $response["data"] = array(); 
     while($row = $result->fetch_assoc()){ 
      $data = array(); 

      $data["_id"] = $row["_id"]; 
      $data["date"] = $row["date"]; 
      $data["username"] = $row["username"]; 
      $data["name"] = $row["name"]; 
      $data["lastname"] = $row["lastname"]; 
      $data["tel"] = $row["tel"]; 

      array_push($response["data"], $data); 
     } 
     $response["success"]=1; 
    } 
    else{ 
     $response["success"]=0; 
     $response["message"]="The database is empty."; 
    } 
$result->close(); 
    } 
else{ 
    $response["success"]=0; 
    $response["message"]="An error occurred while retrieving data."; 
} 
} 
else{ 
$response["success"]=0; 
$response["message"]="Required field(s) is missing."; 

} 

echo json_encode($response); 

?> 
+0

[變量$用戶名必須用單引號 (')包圍]爲什麼你在查詢中使用'intval'? –

+0

檢查此列名稱的數據類型應該是Char還是Varchar然後 '$ db-> query(「SELECT * FROM data WHERE username LIKE'%{$ username}%'」);' – Sundar

+0

「SELECT * FROM data WHERE username =「。$ username; – JYoThI

回答

1

究竟做intval做?

返回var的整數值,使用 轉換的指定基數(默認值爲10)。 INTVAL()不應該在 對象使用,因爲這樣做會發出E_NOTICE級別的錯誤,並返回1.

所以你的查詢是大致相同,這樣做

SELECT * FROM data WHERE (username=0) 

,自然,因爲你沒有任何用戶名是'0',你沒有得到任何匹配。

問題的癥結是:

$db->query("SELECT * FROM data WHERE(username='".intval($username)."')" 

你不應該傳遞參數是這樣的。而應該做的:

$stmt = $db->prepare("SELECT * FROM data WHERE username=?") 
$stmt->bind_param("s, $username) 
if($db->execute()) } 
    // and read this on how to fetch 
    // http://php.net/manual/en/mysqli-stmt.fetch.php 
} 
+0

喜歡這個? if($ result = $ db-> query(「SELECT * FROM data WHERE username =?」)){ $ stmt-> bind_param(「s,$ username」); $ db-> execute(); –

+0

哦!現在工作正常! //非常感謝您^^ –

+0

謝謝您的建議。 –

0

試試這個

$db->query("SELECT * FROM data WHERE username = '$username'") 
+0

org.json.JSONException的錯誤:java.lang.String類型的值不能轉換爲JSONObject –

+0

我不知道它是php或java文件的錯誤 –

+0

java !!! @sutinee manrob你正在使用mysqli驅動程序和使用PHP爲什麼錯誤與Java .. –

相關問題