使用 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 数据库

用 jQuery/AJAX 更新 MYSQL

使用 datepicker jquery ajax php 更新 mysql 数据库字段

如何使用 AJAX 发布和更新 jQuery 序列化

如何使用带有 json 和 php 的 jquery 的 $.ajax 函数上传文件