2016-09-26 1 views
1

정의 값에서 동일한 사용자 이름으로 모든 행을 선택하고 싶습니다. 내가정의 값에서 모든 행을 선택하십시오. 사용자 이름

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

이 작업을 얻을 아니에요하려고하면 "데이터를 검색하는 동안 오류가 발생했습니다." 그래서 은 내가

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

다시 시도하고 그것을 찾기 일하고 있지만 정확히 할 intval 무엇

<?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 데이터 WHERE username LIKE '% {$ username} %'"); ' – Sundar

+0

"SELECT * FROM data WHERE username = ". $ username; – JYoThI

답변

1

"데이터베이스가 비어"GET에 붙어 ?

변환에 지정된 기본을 사용하여 var의 정수 값을 반환합니다 (기본값은 10 진수입니다). INTVAL() 이렇게하면 E_NOTICE가 발생 방출하고 있기 때문에 자연스럽게

SELECT * FROM data WHERE (username=0) 

와 일을 같이

1. 그래서 쿼리가 거의 동일 리턴으로, 객체에 사용할 수 없습니다 '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 유형의 값

+0

PHP 또는 java 파일에 오류가 있다는 것을 잘 모릅니다. –

+0

java !!! @ suutinee manrob 당신 mysqli 드라이버를 사용하고 PHP를 사용하여 왜 자바와 오류가 .. –

관련 문제