使用 jQuery Ajax 和 PHP 更新 SQL 数据库
Posted
技术标签:
【中文标题】使用 jQuery Ajax 和 PHP 更新 SQL 数据库【英文标题】:Updating SQL database using jQuery Ajax and PHP 【发布时间】:2011-07-10 01:06:04 【问题描述】:所以我尝试使用 ajax 来更新我的 sql 数据库中的值,方法是抓取被点击的链接并在数据库中找到该链接。我不确定为什么它不起作用:\
$('.visit').click( function()
var thisLink = $(this).attr('href');
$.post("visit.php", link: thisLink);
);
<?php
$link = $_POST['link'];
mysql_query("UPDATE items SET visited = 1 WHERE link = $link");
include("print.php");
?>
【问题讨论】:
还可以看看 'bind-param' 方法。您目前有一种情况,有人可能会发布到以下 url 并导致问题。 yoursite.com/visit.php?link='data;DROP TABLE [items]' @rcravens 对,我明白。我将如何使用它来修改此代码? 【参考方案1】: <?php
$link = $_POST['link'];
mysql_query("UPDATE items SET visited = 1 WHERE link = '$link'");
include("print.php"); // what print.php does ?
?>
在 $link 周围加上引号
将 $link 与数据库字段中的值进行比较 - 它需要完全匹配
【讨论】:
这是我唯一能看到的问题 嗯,是的,这似乎不起作用。我正在检查数据库,它没有得到更新。我的表称为项目,行称为链接。我的 sql 语法对吗? print.php 也只是打印出 html 关于 print.php - 你的 jQuery 帖子似乎不关心返回 - 所以它会浪费 CPU 来生成它 嗯,我想做的是重新发布 html,如果链接已经被访问过,我将附加一个 css 类来证明这一点。所以 print.php 做到了。【参考方案2】:为了防止 SQL 注入,请使用以下内容(从内存中键入...仔细检查)。
<?php
$db = new PDO('connection string', 'username', 'password');
$query = "UPDATE items SET visited=1 WHERE link=:link";
$stmt = $db->prepare($query);
$stmt->execute(array(':link' => $link));
?>
鲍勃
【讨论】:
添加 PDO 支持是 php5 (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 或 PECL @kjy112 好点。感谢使用 mysql_real_escape_string 的示例。【参考方案3】: $('.visit').click( function()
var thisLink = $(this).attr('href');
$.post("visit.php", link: thisLink);
);
<?php
$link = $_POST['link'];
mysql_query("UPDATE items SET visited = '1' WHERE link = '".mysql_real_escape_string($link)."'");
include("print.php");
?>
在 SET 和 WHERE 参数周围使用单引号。此外,mysql_escape_real_string 输入数据库以进行 SQL 注入
【讨论】:
以上是关于使用 jQuery Ajax 和 PHP 更新 SQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章
AJAX PHP MYSQL 更新/编辑记录 (jQuery)
使用 jQuery Ajax 和 PHP 更新 SQL 数据库