简体   繁体   English

检查SQL PHP上的两列是否匹配

[英]Check if two column match on SQL PHP

I have a form where the user has to enter their reservation id and last name. 我有一个表格,用户必须输入他们的预订ID和姓氏。 If these two values match in the database then I need to return the corresponding values from the database. 如果这两个值在数据库中匹配,那么我需要从数据库中返回相应的值。

I have two files, one that is html where I use ajax and one php file. 我有两个文件,一个是html,我使用ajax,另一个是php文件。 When clicking on the button, nothing is being returned, I am not seeing any specific errors and I am sure that the value I put in are correct. 单击该按钮时,未返回任何内容,没有看到任何特定的错误,并且我确定输入的值正确。

<script>
var ajax = getHTTPObject();

function getHTTPObject()
{
    var xmlhttp;
    if (window.XMLHttpRequest) {
      // code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
    } else if (window.ActiveXObject) {
      // code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    } else {
      //alert("Your browser does not support XMLHTTP!");
    }
    return xmlhttp;
}

function updateCityState()
{
    if (ajax)
    {
        var reservation_id = document.getElementById("reservation_id").value;
          var guest_last_name = document.getElementById("guest_last_name").value;

        if(reservation_id)
        {

            var param = "?reservation_id=" + reservation_id + "&guest_last_name=" + guest_last_name;
var url = "test04.php";

            ajax.open("GET", url + param, true);
            ajax.onreadystatechange = handleAjax;
            ajax.send(null);

        }
    }
}
function handleAjax()                                                                                                                           
{
  if (ajax.readyState == 4)
   {
        var guest_full_name = document.getElementById('guest_full_name');

            var unit_number = document.getElementById('unit_number');

    var floor = document.getElementById('floor');

        var key_sa = document.getElementById('key_sa');




    if(!!ajax.responseText) {
      var result = JSON.parse(ajax.responseText);
      if(!!result){
         guest_full_name.innerHTML  = (!!result.guest_full_name) ? result.guest_full_name : '';

             unit_number.innerHTML = (!!result.unit_number) ? result.unit_number : '';


        floor.innerHTML = (!!result.floor) ? result.floor : '';


        key_sa.innerHTML = (!!result.key_sa) ? result.key_sa : '';
      } 
    }
   }
 }
</script>



<p id='employee_name'></p>
<p id='employee_age'></p>
<p id='safe_code'></p>

My test04.php 我的test04.php

<?php

$conn = mysqli_connect("","","","");

$reservation_id = mysqli_real_escape_string($conn, $_GET['reservation_id']);
$guest_last_name = mysqli_real_escape_string($conn, $_GET['guest_last_name']);

$query = "SELECT reservation_id, guest_full_name, guest_last_name unit_number, floor, key_sa FROM reservations2 INNER JOIN guest ON (reservations2.reservation_id=guest.reservation_idg) INNER JOIN unit USING (unit_id) where reservation_id ='".$reservation_id."'AND guest_last_name ='".$guest_last_name."";


 $result = mysqli_query($conn, $query) or die(mysql_error());
$response = array();

if(mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {



        $response['guest_full_name'] = ($row['guest_full_name'] != '') ? $row['guest_full_name'] : '';
         $response['unit_number'] = ($row['unit_number'] != '') ? $row['unit_number'] : '';

             $response['floor'] = ($row['floor'] != '') ? $row['floor'] : '';
        $response['key_sa'] = ($row['key_sa'] != '') ? $row['key_sa'] : '';



    }
}
echo  json_encode($response, true); 


?>

I am not seeing any specific errors 我没有看到任何特定的错误

  • Where are you looking? 你在看哪里?
  • Did you check the raw response from the PHP script or just look at what was rendered in your browser? 您是否检查了来自PHP脚本的原始响应,还是只是查看了浏览器中呈现的内容?
  • Did you verify that error logging is working and did you check your logs? 您是否已验证错误日志记录是否正常工作以及是否检查了日志?

The logic of your PHP is unclear - your JSON data and the PHP array can't handle multiple records yet you process multiple records. PHP的逻辑尚不清楚-JSON数据和PHP数组无法处理多个记录,但您可以处理多个记录。 It would be nice to implement REST properly. 正确实现REST会很好。 This should also apply authentication and use CSRF for security - but I'll assume you left those out for illustrative purposes. 这也应该应用身份验证,并使用CSRF进行安全保护-但我假设您出于说明目的而将其省略。

Your code is not written to handle failures or missing data. 您的代码无法处理故障或丢失数据。 Consider (noting all the differences with what you posted): 考虑(注意与您发布的内容的所有差异):

<?php

$conn = mysqli_connect("","","","");
$response = array();

$reservation_id = mysqli_real_escape_string($conn, $_GET['reservation_id']);
$guest_last_name = mysqli_real_escape_string($conn, $_GET['guest_last_name']);

$query = "SELECT reservation_id, guest_full_name
  , guest_last_name unit_number, floor, key_sa 
  FROM reservations2 
  INNER JOIN guest 
  ON (reservations2.reservation_id=guest.reservation_idg) 
  INNER JOIN unit USING (unit_id) 
  WHERE reservation_id ='".$reservation_id."'
    AND guest_last_name ='".$guest_last_name."";
$result = mysqli_query($conn, $query);
if (!$result) {
      $response['status']=503
      $response['msg']="Error";
      trigger_error(mysql_error());
      finish($response);
      exit;
}

$response['status']=200;
$response['msg']='OK';
$response['guest_full_name'] = htmlentities($_GET['guest_last_name']);
$response['reservations']=array();

while($row = mysqli_fetch_assoc($result)) {
    $response['reservations'][]=array(
           'unit_number'=>$row['unit_number'],
           'floor'=>$row['floor'],
           'key_sa'=>$row['floor_sa']);
  }
}
finish($response);
exit;

function finish($response)
{
    header("HTTP/1.1 $response[status] $response[msg]");
    header("Content-type: application/json");
    echo  json_encode($response, true); 
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM