<?php /** Connect to DB */ mysql_connect("localhost", "dbuser", "pass") or die(mysql_error()); mysql_select_db("dbname") or die(mysql_error()); $link_id = $_GET['link_id']; /** increase the counter of the URL*/ mysql_query("UPDATE link_count SET count = count + 1 WHERE ID = $link_id") or die(mysql_error()); /** retrieve URL */ $result = mysql_query("SELECT * FROM link_count WHERE ID = $link_id") or die(mysql_error()); $row = mysql_fetch_array($result); header( "Location:" .$row['URL'] ); ?>
Конечно, информация о db была изменена для публикации здесь. Где я пытаюсь использовать
count.php?link_id=1
в ссылке я получаю «Неизвестный столбец« ID »в« where clause »»
Я проверил, чтобы были все одиночные кавычки вместо обратных ссылок …
EDIT: решение, предоставленное @Kai Qing в комментарии к ответу CanSpice.
Ваш столбец, вероятно, имеет имя id
, а не ID
. Имена столбцов зависят от регистра.
Я бы предложил убедиться, что ваш столбец на самом деле называется ID, а не id. Он говорит вам, что столбец не существует, и может быть, потому что на самом деле он не существует, как указано. Кроме того, count – это зарезервированный термин mysql. измените это на следующее:
mysql_query("UPDATE link_count SET `count` = `count` + 1 WHERE ID = $link_id") or die(mysql_error());
и перед тем, как вы прочитаете лекции о отверстиях для инъекций, оберните свой $ link_id следующим образом:
mysql_real_escape_string($link_id)
$sql = sprintf("UPDATE link_count SET count = count + 1 WHERE ID = %s",mysql_real_escape_string($_GET['link_id'])); mysql_query($sql) or die(mysql_error());
Кроме того, вы можете не захотеть распечатать все свои mysql_errors, как только это будет в производстве.