PHP MYSQL: исправить код для увеличения столбца представлений при каждой загрузке страницы в браузере - PullRequest
0 голосов
/ 01 февраля 2012

Я пытаюсь создать систему "представлений" на своем сайте книг.

У меня есть следующие таблицы со следующими столбцами:

Books
-bookid
-bookname
-authorid
-views

моя веб-страница настроена для отображения книги на основе переменной $_GET['bookid'], и я хочу добавить 1 (увеличить столбец views на единицу для этой конкретной книги)

Я попытался использовать следующий код, но он не обновил мою таблицу:

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

ТАКЖЕ: я использовал dreamweaver для запуска запроса набора записей), так что, возможно, что-то другое.

Пожалуйста, помогите!

Sidenote: Можете ли вы порекомендовать хорошую книгу / видео или письменное руководство для изучения php и mysql для начинающих, таких как я!

Ответы [ 3 ]

2 голосов
/ 01 февраля 2012

Это важно: не включайте параметры $ _GET непосредственно в ваш SQL-запрос.

Это делает ваш сайт уязвимым для атаки SQL-инъекцией. Санатизируйте ваши данные, используя:

$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();

EDIT: Кроме того, просто подсказка: поскольку вы используете $_GET, вы должны выполнить что-то вроде yourscript.php?book_id=12345, это то, что вы делаете?

1 голос
/ 01 февраля 2012

Ваш запрос выглядит немного не так. Попробуй это: $sql = 'UPDATE books SET views = views+1 WHERE bookid = ' . intval($_GET['book_id']);

1 голос
/ 01 февраля 2012

вы уже нашли некоторые из лучших способов выучить PHP: писать код и приходить сюда, когда вы не знаете больше :) (у меня нет действительно хорошего учебника помимо этого;) Что касается вашеговопрос:

  • проверить значение $_GET['bookid']
  • проверить значение $sql
  • , если все выглядит так, как задумано, выполнить запрос напрямую

о, подождите.вы на самом деле не выполняете sql в своем коде, просто генерируете строку с запросом.вам нужно открыть соединение и т. д., или вы делаете это и оставляете это здесь?

...