2011-03-07 14 views
3

私はクリックしたリンクをつかみ、データベース内のそのリンクを見つけることによって、ajaxを使用してSQLデータベースの値を更新しようとしています。私はそれが動作していない理由はわからない:$リンク周り\jQuery AjaxとPHPを使用して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"); 
?> 
+0

また、 'bind-param'メソッドを見てください。現在、次のURLに投稿して問題を引き起こす可能性があります。 yoursite.com/visit.php?link='data;DROP TABLE [items] ' – rcravens

+0

@rcravens権利私は理解します。どのように私はこのコードを使用して変更できますか? – redenvy

+0

以下を参照してください...... – rcravens

答えて

1
<?php 
    $link = $_POST['link']; 
    mysql_query("UPDATE items SET visited = 1 WHERE link = '$link'"); 
    include("print.php"); // what print.php does ? 
?> 

プット・引用は

は、データベースのフィールドの値を持つ$リンクを比較する - それがexaclly

+0

これは私が見ることができる唯一の問題です。 –

+0

うんうん、うまくいきませんでした。私はデータベースをチェックしており、更新されていません。私のテーブルはアイテムと呼ばれ、行はリンクと呼ばれます。私のSQL構文は正しいですか?また、print.phpはprint.phpのhtml – redenvy

+0

を印刷します。jQueryの投稿は返品を気にしないようです - – bensiu

2
と一致する必要があります

SQLインジェクションを防ぐには、次のようなものを使用します(メモリからの入力...ダブルチェック)。 SETとのparams周り

<?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)); 
?> 

ボブ

+0

PDOサポートを追加するのはphp5(PHP 5> = 5.1.0、PECL pdo> = 0.1.0)またはPECL – kjy112

+0

@ kjy112です。 mysql_real_escape_stringを使用していただきありがとうございます。 – rcravens

2
$('.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"); 
    ?> 

使用単一引用符。また、mysql_escape_real_stringはSQLインプットのためにデータベースに入力します

関連する問題