PHP MYSQL:每次在浏览器中加载页面时,更正代码以增加视图列


PHP MYSQL: Correct Code to Increment a views column every time a page is loaded in the browser

我正试图在我的图书网站上创建一个"视图"系统。

我有以下表格和以下列:

Books
-bookid
-bookname
-authorid
-views

我的网页设置为显示一本基于$_GET['bookid']变量的书,我想添加1(将该特定书的views列增加一)

我尝试使用以下代码,但它没有更新我的表:

<?php $sql = "UPDATE `books` 'n" . "SET views = views+1 WHERE" . $_GET['bookid'] .= "bookid"; ?>

另外:我使用dreamweaver来运行记录集查询),所以可能有些不同

请帮忙!

旁注:你能推荐一本好书/视频或书面教程来学习php和mysql吗

这一点很重要:不要在SQL查询中直接包含$_GET参数

这使您的网站容易受到SQL注入攻击。使用对您的输入进行Sanatise

$book_id = mysql_real_escape_string($_GET['book_id']); // If it is a string
$book_id = intval($_GET['book_id']); // It it is an integer
// Assuming it is an integer
$sql = "UPDATE books SET views = views+1 WHERE bookid = $book_id"; 

你显然需要执行那个查询,你在执行吗?

$user="username";
$password="password";
$database="database";
mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");
mysql_query($sql);
mysql_close();

编辑:另外,只是一个提示,既然您使用的是$_GET,那么您应该执行类似yourscript.php?book_id=12345的操作,这就是您正在做的吗?

您已经找到了一些学习PHP的最佳方法:编写代码,并在不了解更多信息时来到这里:)(除此之外,我手头没有真正好的教程;)至于你的问题:

  • 检查$_GET['bookid']的值
  • 检查$sql的值
  • 如果一切看起来都符合预期,请直接运行查询

哦,等等。您实际上并没有在代码中执行sql,只是使用查询生成一个字符串。你需要打开一个连接等,还是你这样做,然后把它留在这里?

您的查询看起来有点不对劲。请尝试以下操作:$sql = 'UPDATE books SET views = views+1 WHERE bookid = ' . intval($_GET['book_id']);