从数据库加载视频列表的索引页面上的代码:
<?php
ini_set('display_errors', 1);
mysqli_set_charset($link, 'utf8mb4');
$query="SELECT * FROM videos";
$result=mysqli_query($link,$query) or die (mysqli_error($link));
while($row=mysqli_fetch_assoc($result))
{
echo '<div class=\"3u 12u(medium)\">';
echo '<section class=\"box feature\">';
echo '<p id="video_' . $row['v_id'] . '" class="videos">'.$row['v_url'].'</p>';
echo '<p>'.$row['v_title'].'</p>';
echo '<p>'.$row['v_date'].'</p>';
echo '<p>'.$row['v_hits'].'</p>';
echo '</section></div>';
}
?>
<script>
$(".videos").click(function(){
id = this.id;
video_id = id.substring(id.lastIndexOf('_')+1,id.length);
//ajax call
$.ajax({
type: "GET",
url: "update_video_counter.php",
data: 'video_id=' + video_id,
cache: false,
success: function (html) {
}
});
});
</script>
然后是update_video_counter.php页面:
<?php
$id = $_GET["video_id"];
ini_set('display_errors', 1);
mysqli_set_charset($link, 'utf8mb4');
$query="UPDATE videos SET v_hits = v_hits + 1 WHERE v_id = $id";
?>
现在我对Ajax / JQuery不是很有经验,但它看起来不错。它虽然没有增加,但是如果我尝试在数据库中手动查询以检查所使用的查询是否正确,那么它的工作正常。
答案 0 :(得分:0)
我认为您需要做的就是执行查询。您还应该使用预准备语句或将整数值转换为int
s,这样就不会注入。
$id = (int)$_GET["video_id"];
ini_set('display_errors', 1);
mysqli_set_charset($link, 'utf8mb4');
$query="UPDATE videos SET v_hits = v_hits + 1 WHERE v_id = $id";
mysqli_query($query);
有关SQL注入的其他信息:
How can I prevent SQL injection in PHP? {
{3}} {
{3}}