正如标题所说,我正在尝试通过jquery验证插件检查Patch_No的值是否存在。我通读了许多其他类似的主题,这就是我想出代码的方式,但尽管没有错误,但它似乎不起作用。我很确定 DBconnection.php 有效,因此我在另一个文件中使用它来输入数据。
<?php
include 'DBconnection.php';
$patch = $_REQUEST['patch'];
$sql="SELECT * FROM champions WHERE Patch_No ='$patch'";
$conn->query($sql);
$num = mysql_num_rows($sql);
if($num>0){
echo 'false';
}
else{
echo 'true';
}
?>
这里也是jquery验证代码
<script>
$(document).ready(function(){
$('#first_form').validate({
rules: {
patch: {
required: true,
minlength: 4,
remote: {
url: "checkpatch.php",
type: "post"
}
}
},
messages: {
patch: {
required: "Please enter patch version.",
remote: "This Patch already exists."
}
}
});
});
</script>
最后但并非最不重要的是 php 中的实际形式
echo '<form id="first_form" action="index.php" method="POST" style="border: 0; margin: 0;">';
echo '<input type="hidden" value="'.$formid.'" name="formid">';
echo '<input type="text" name="patch" placeholder="PATCH e.g. 4.20" required autofocus><br/>';
echo '<input placeholder="Number of Champions" value="1" type="number" name="champ_number" min="1" max="99" required><br/>';
echo '<input type="submit" value="next">';
echo '</form>';
编辑数据库连接.php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$db = "patches";
$conn = new mysqli($servername, $username, $password, $db);
if($conn->connect_error){
die("Connection failed: ". $conn->connect_error);
}
?>
尝试如下:
$sql="SELECT * FROM champions WHERE Patch_No ='".$patch."'";
$result = $conn->query($sql);
$num = $result->num_rows;
这些台词非常糟糕。你想获取一个字符串...使用这个:
$sql="SELECT * FROM champions WHERE Patch_No ='$patch'";
$conn->query($sql);
$num = mysql_num_rows($conn);
你需要获取你的$conn
,这是资源,而不是$sql
。
笔记
不要使用 mysql 函数,它们已被弃用。
通过在查询中转义变量或使用预准备语句来避免 sql 注入。