Ajax вставить данные, не возвращающие ответ - PHP & MySQL - PullRequest
0 голосов
/ 31 января 2020

Я работаю на сканере сканера, поэтому я использовал ajax, когда код читается сканером, он должен вставить данные в базу данных. Проблема в том, что данные не вставляются.

Внутри скрипта / Ajax - query - это переменная, которую я использовал для получения данных (имя)

  var query = $('#scanned-QR').val();
     fetch_customer_data(query);


      $(document).on('keyup', '#scanned-QR', function(){
       var query = $(this).val();
       fetch_customer_data(query);
      });

      function fetch_customer_data(query = '') 
      {

         $.ajax({
           url:"validScan.php",
           method: 'GET',
           data:{query:query},
           dataType: 'json',
           success:function(data) {
           console.log(data);
              if (data.status == '1') {

                decoder.stop();
                alert('Sucess!');

              }
              else if(data.status=='0'){

                 decoder.stop();
                 alert('Fail!');

              }

             },
               error:function(err){

               console.log(err);
             }
          });
       }

Мой ввод / Текстовое поле

<textarea id="scanned-QR" name="scanQR" readonly></textarea>

MySQL

<?php
  ini_set('display_errors', 1);
  ini_set('display_startup_errors', 1);
  error_reporting(E_ALL);

  $link = mysqli_connect("localhost","root","");
  mysqli_select_db($link, "schedule");

  $query = $_GET['query'];

  $res = mysqli_query($link,"INSERT INTO attendance (name) VALUES ('$query')");


  if (mysqli_num_rows($res) > 0) {
        $respose = array('status'=>'1');//1 for success
        echo json_encode($respose );        
  } else {
        $respose = array('status'=>'0');//0 for fail
        echo json_encode($respose );        
  }
  mysqli_close($link);


?>

Ответы [ 3 ]

1 голос
/ 31 января 2020

Для запроса вставки результат будет возвращен как логическое значение, поэтому mysqli_num_rows ($ res) не примет логический аргумент. mysqli_num_rows () ожидает, что параметр 1 будет mysqli_result

Таким образом, вы можете просто проверить ниже, вставлен он или нет:

if ($res) {
    $respose = array('status'=>'1');//1 for success
    echo json_encode($respose);
    exit;   
} else {
    $respose = array('status'=>'0');//0 for fail
    echo json_encode($respose); 
    exit;   
}
mysqli_close($link);
0 голосов
/ 31 января 2020

mysqli_num_rows() - для получения количества строк, возвращаемых запросом SELECT. Вместо этого вам нужно проверить количество затронутых строк.

Вы также должны использовать подготовленный оператор, и я также рекомендую вам настроить MySQLi для выдачи ошибок. Я также предпочитаю объектно-ориентированный подход.

<?php 
// Configure MySQLi to throw exceptions on failure 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

// Init connection
$link = new mysqli("localhost", "root", "", "schedule");
$response = [];

// Prepare the statement and execute it
$stmt = $link->prepare("INSERT INTO attendance (name) VALUES (?)");
$stmt->bind_param("s", $_GET['query']);
$stmt->execute();

// Check the number of inserted rows
if ($stmt->affected_rows) {
    $response['status'] = 1;
} else {
    $response['status'] = 0;
}

// Close the statement and connection
$stmt->close();
$link->close();

echo json_encode($response);
0 голосов
/ 31 января 2020

Вы должны использовать выход, попробуйте следующий код:

ini_set('display_errors', 1);
  ini_set('display_startup_errors', 1);
  error_reporting(E_ALL);

  $link = mysqli_connect("localhost","root","");
  mysqli_select_db($link, "schedule");

  $query = $_GET['query'];

  $res = mysqli_query($link,"INSERT INTO attendance (name) VALUES ('$query')");


  if (mysqli_num_rows($res) > 0) {
        $respose = array('status'=>'1');//1 for success
        echo json_encode($respose );
        exit;   
  } else {
        $respose = array('status'=>'0');//0 for fail
        echo json_encode($respose ); 
        exit;   
  }
  mysqli_close($link);
  exit;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...