2016-09-26 2 views
1

Я хочу выбрать все строки как одно и то же имя пользователя из значения define. Когда я пытаюсьВыделить все строки из определения значения username

$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-> (« 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: Значение

+0

Я не знаю, что это ошибка с файлом php или java –

+0

java !!! @sutinee manrob вы используете драйвер mysqli и используете php, почему ошибка с java .. –

Смежные вопросы