2016-04-12 4 views
-2

Вот мой php-код для отображения сведений о пользователе в отношении выбора имени района.Предупреждение: mysqli_num_rows() ожидает, что параметр 1 будет mysqli_result, boolean

<?php 
define('HOST','localhost'); 
define('USER','root'); 
define('PASS',''); 
define('DB','farmer'); 
$conn = mysqli_connect(HOST,USER,PASS,DB); 

if(!$conn) { 
     //required post params is missing 
     $response["error"] = TRUE; 
     $response["error_msg"] = "Connection could not be established!"; 
     echo json_encode($response); 
    } 
    $sql = "select code,name,mobile from reg_farmer where dist_name=$_POST[dt_name]"; 
    $res = mysqli_query($conn,$sql); 
$num_rows = mysqli_num_rows($res); 
///echo "$num_rows Rows\n"; 
    if ($num_rows == 0){ 
         $response["error"] = TRUE; 
         $response["error_msg"] = "No Data Exist"; 
         echo json_encode($response); 
         exit(0); 
       } 

$result = array(); 
while($row = mysqli_fetch_array($res)){ 
    $result = array("error" => FALSE); 
$b[]=array('code'=>$row[0],'name'=>$row[1],'mobile'=>$row[2]); 
$result["District"] = $b; 
} 
echo json_encode($result); 
mysqli_close($conn); 
?> 

Но это показывает { "ошибка": правда, "ERROR_MSG": "Нет данные существуют"} ...

Моей структуры таблицы показан ниже enter image description here

+1

'dist_name = $ _ POST [dt_name]' должен быть в кавычках !! Ваш запрос терпит неудачу, и вы получили эту ошибку! – Saty

+0

'mysqli_query()' будет возвращать FALSE при ошибке, как указано в [docs] (http://php.net/manual/en/mysqli.query.php). PHP говорит вам, что вы пытаетесь использовать логическое значение в mysqli_num_rows(), из-за чего вы видите «Нет данных». Вам нужно посмотреть на свой 'mysqli_query()', чтобы увидеть, что происходит не так. – Henders

+2

Возможный дубликат [mysql \ _fetch \ _array()/mysql \ _fetch \ _assoc()/mysql \ _fetch \ _row() ожидает, что параметр 1 будет ресурсом или mysqli \ _result, boolean given] (http://stackoverflow.com/questions/2973202/mysql-fetch-array-mysql-fetch-assoc-mysql-fetch-row-expects-parameter-1-to) –

ответ

-1

POST-dt_name хранить в переменной и использовать ее в запросе mysql: $ dt_name = $ _POST ['dt_name'];

Попробуйте

<?php 
define('HOST','localhost'); 
define('USER','root'); 
define('PASS',''); 
define('DB','test'); 
$conn = mysqli_connect(HOST,USER,PASS,DB); 

if(!$conn) 
{ 
    //required post params is missing 
    $response["error"] = TRUE; 
    $response["error_msg"] = "Connection could not be established!"; 
    echo json_encode($response); 
} 

$dt_name = $_POST['dt_name']; 
$sql = "select code,name,mobile from reg_farmer where dist_name='$dt_name'"; 
$res = mysqli_query($conn,$sql); 

$num_rows = mysqli_num_rows($res); 
//echo "$num_rows Rows\n"; 
if ($num_rows == 0){ 
    $response["error"] = TRUE; 
    $response["error_msg"] = "No Data Exist"; 
    echo json_encode($response); 
    exit(0); 
} 

$result = array(); 
while($row = mysqli_fetch_array($res)){ 
    $result = array("error" => FALSE); 
    $b[]=array('code'=>$row[0],'name'=>$row[1],'mobile'=>$row[2]); 
    $result["District"] = $b; 
} 
echo json_encode($result); 
mysqli_close($conn); 
?> 
+2

Почему OP попробует? Объяснение этому ответу будет лучше для OP и даже для нас. –

+0

Итак, OP должен вставлять данные непосредственно из '$ _POST' в оператор SQL? Я подозреваю, что вы нашли проблему, но, пожалуйста, покажите пользователю, как это сделать с помощью подготовленного заявления, оставив свою базу данных открытой для SQL-инъекции. – andrewsi

+0

@andrewsi Вместо этого вы можете объяснить, ответив на вопрос и подробное объяснение угроз безопасности в ее кодировании, чтобы она могла улучшить и даже для всех остальных. –

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