如果MySQL查询不返回任何行,PHP AJAX通知 处境

如果MySQL查询不返回任何行,PHP AJAX通知 处境,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我有一个工作脚本,它向get\u code.php发送一个ajax请求。此脚本从主页运行-index.php。get_code.php脚本查询mymysql数据库中的一行,然后将数据发送回index.php 现行代码 index.php中的jQuery <script type="text/javascript"> $("#CMTCode").click(function(){ var cde = $("#cmtcodeinput").val(); $.aja

我有一个工作脚本,它向
get\u code.php
发送一个ajax请求。此脚本从主页运行-
index.php
get_code.php
脚本查询mymysql数据库中的一行,然后将数据发送回
index.php

现行代码 index.php中的jQuery

<script type="text/javascript">
$("#CMTCode").click(function(){
    var cde = $("#cmtcodeinput").val();
        $.ajax({
            method:'POST',
            url:'get_code.php',
            data: {va_code:cde},
            dataType: 'json',
            success: function(output_string){
                    $('#rtable').append(output_string);
                    $("#cmtcodeinput").val('');
                    var prc = $(".price:last");
                    prc.focus();
            }
        });
});    
</script>
<?php
include('dbc.php');
$code = $_POST['va_code'];
$cq = mysql_query("SELECT * FROM variants where va_code='$code'")or die(mysql_error());
  if(!$cq){
mysql_close();
echo json_encode('There was an error running the query: ' . mysql_error());
  }elseif(!mysql_num_rows($cq)){
mysql_close();
echo json_encode('No results returned');
  }else{
$output_string = '';
$output_string .= '<tr>';
while($row = mysql_fetch_assoc($cq))
{        
     $output_string .= '<td>'.$row['cmtcost'].'</td>';
//etc. etc. lots more output here
}
     $output_string .= '</tr>';
}
mysql_close();
echo json_encode($output_string);
?>

$(“#CMTCode”)。单击(函数(){
var cde=$(“#cmtcodeinput”).val();
$.ajax({
方法:'POST',
url:'get_code.php',
数据:{va_代码:cde},
数据类型:“json”,
成功:函数(输出字符串){
$('#rtable').append(输出字符串);
$(“#cmtcodeinput”).val(“”);
var prc=$(“.价格:上次”);
中华人民共和国焦点();
}
});
});    
PHP脚本get_code.PHP

<script type="text/javascript">
$("#CMTCode").click(function(){
    var cde = $("#cmtcodeinput").val();
        $.ajax({
            method:'POST',
            url:'get_code.php',
            data: {va_code:cde},
            dataType: 'json',
            success: function(output_string){
                    $('#rtable').append(output_string);
                    $("#cmtcodeinput").val('');
                    var prc = $(".price:last");
                    prc.focus();
            }
        });
});    
</script>
<?php
include('dbc.php');
$code = $_POST['va_code'];
$cq = mysql_query("SELECT * FROM variants where va_code='$code'")or die(mysql_error());
  if(!$cq){
mysql_close();
echo json_encode('There was an error running the query: ' . mysql_error());
  }elseif(!mysql_num_rows($cq)){
mysql_close();
echo json_encode('No results returned');
  }else{
$output_string = '';
$output_string .= '<tr>';
while($row = mysql_fetch_assoc($cq))
{        
     $output_string .= '<td>'.$row['cmtcost'].'</td>';
//etc. etc. lots more output here
}
     $output_string .= '</tr>';
}
mysql_close();
echo json_encode($output_string);
?>

问题 但是,如果没有找到查询结果,则页面上不会返回任何内容来通知用户。理想情况下,我希望打开一个模式,或者显示一个
div
,在其中我可以使用用户输入的数据。我就是不知道该如何检查
$cq
是否返回任何结果,如果是这样,那么就在
index.php
上显示一些内容,比如说“找不到您的代码”


感谢所有帮助

您可以返回结果标志。这是一个很好的逻辑,很容易理解

如果未找到行:

die(json_encode(['result' => false, 'error' => 'No code was found']));
如果找到某些代码:

die(json_encode(['result' => true, 'output' => $output_string]));
在js中:

...
success: function(data){
    if (!data.result) {
        alert(data.error);
    } else {
        $('#rtable').append(data.output);
        $("#cmtcodeinput").val('');
        var prc = $(".price:last");
        prc.focus();
    }
}
...

希望有帮助。

您可以返回结果标志。这是一个很好的逻辑,很容易理解

如果未找到行:

die(json_encode(['result' => false, 'error' => 'No code was found']));
如果找到某些代码:

die(json_encode(['result' => true, 'output' => $output_string]));
在js中:

...
success: function(data){
    if (!data.result) {
        alert(data.error);
    } else {
        $('#rtable').append(data.output);
        $("#cmtcodeinput").val('');
        var prc = $(".price:last");
        prc.focus();
    }
}
...

希望有帮助。

您的代码容易受到SQL注入攻击。您应该按照中所述使用或准备语句。
mysql.*
函数从PHP v5.5开始就被弃用,并从v7.0开始被删除。它们不应用于新代码,应尽快替换为或等效代码。您应明确使用准备好的语句,加上错误报告(E_ALL);ini设置(“显示错误”,1);并清理用户输入值。除此之外,在get_code.php->if($stmt->num_rows>0){//do stuff here/}else{echo“false”;}->使用ajax“success”中的响应“false”来执行您需要的任何操作……感谢@alexhowansky的提示您的代码容易受到SQL注入攻击。您应该按照中所述使用或准备语句。
mysql.*
函数从PHP v5.5开始就被弃用,并从v7.0开始被删除。它们不应用于新代码,应尽快替换为或等效代码。您应明确使用准备好的语句,加上错误报告(E_ALL);ini设置(“显示错误”,1);并清理用户输入值。除此之外,在get_code.php->if($stmt->num_rows>0){//do stuff here//}else{echo“false”;}->使用ajax“success”中的响应“false”来做任何你需要的事情……感谢大家的提醒@AlexHowanskyPerfect!正是我想要的@JazZ。很高兴它能帮上忙。祝PDO好运完美的正是我想要的@JazZ。很高兴它能帮上忙。祝PDO好运