php - 使用 JQuery AJAX 和 php 获取数据到 mysql 数据库
问题描述
我试图用 AJAX 将数据插入我的数据库但不工作。我可以验证我是否已连接到数据库,但是当我单击它时不会插入数据。谢谢
使用点击功能,我采用了我想在我的数据库中插入的 2 参数。
$( "#q_answer1" ).click(function () {
var q_no = $("#q_no").val();
var main_no = $("#total_no").val();
$.ajax({
url: "server.php",
type: "post",
async: false,
data: {
"done": 1,
"username": q_no,
"comment": main_no
},
success: function(){
$("#q_no").val('');
$("#total_no").val('');
}
});
});
这是 php 文件,首先连接到 ddbb 并使用 mysql_query 插入 2 个值。
<?php
include("dbh.php");
if (isset($_POST['done'])) {
$q_no = mysql_escape_string($_POST['username']);
$total_no = mysql_escape_string($_POST['comment']);
mysql_query("INSERT INTO variables(id, names) VALUES('{$q_no}', '{$total_no}')");
exit();
}
?>
html是这样的:
<div id="total_no">1</div>
<div id="q_answer1" class="btn left_b">yes</div>
解决方案
我认为您应该使用 PDO 来连接数据库,而不是 PHP 不再支持的旧驱动程序。使用 PDO,您可以使用准备好的语句来防止sql 注入
数据库文件
$servername = "localhost";
$username = "user";
$password = "pass";
$dbname = 'db';
try {
$db = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
exit($e->getMessage());
}
?>
服务.php
<?php
include("dbh.php");
if (isset($_POST['done'])) {
$q_no = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
$total_no = filter_var($_POST['comment'], FILTER_SANITIZE_STRING);
try {
$stmt = $db->prepare("INSERT INTO variables(id, names) VALUES(?, ?)");
$stmt->execute(array($q_no, $total_no));
echo json_encode(["message" => "success"]); // sends success response to front-end
} catch (\Exception $e) {
echo json_encode(["message" => $e->getMessage() ]); // sends error response to front-end
}
}
?>
在你的 ajax 检查数据是否被插入。
$("#q_answer1").click(function() {
var q_no = $("#q_no").val();
var main_no = $("#total_no").val();
$.ajax({
url: "file.php",
type: "post",
async: false,
data: {
"done": 1,
"username": q_no,
"comment": main_no
},
success: function(data) {
const respose = JSON.parse(data);
if (respose.message === 'success') { // data was inserted
$("#q_no").val('');
$("#total_no").val('');
}else {
alert(respose.message); // some error has occured
}
}
});
});
推荐阅读
- python - Python代码AttributeError问题:'NoneType'对象没有属性'title'
- php - 解析错误:语法错误,第 10 行 E:\wamp64\www\project-trial\install.php 中的意外 'try' (T_TRY)
- javascript - 当我试图在 jquery 中将数据附加到其主体时,模态弹出窗口正在关闭
- javascript - 从烧瓶端点生成 PDF
- r - 为包构建二进制文件的不同 R 版本?
- java - 如何在不同的包中使用 Filter 和 Servlet?
- javascript - Intellisense 不会在课堂上显示成员
- java - 如何从 Firebase 查询数据以先获取最大值,最后获取最小值?
- php - 使用 $_SERVER['REMOTE_ADDR'] 、 $_SERVER['HTTP_CLIENT_IP'] 和 $_SERVER['HTTP_X_FORWARDED_FOR']
- graph - Neo4j-如何通过单个 MERGE 从两列 CSV 文件创建节点?