如果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好运