我正试图在我的图书网站上创建一个"视图"系统。
我有以下表格和以下列:
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']);