<?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'] );
?>
当然,数据库信息已在此处发布。我尝试使用的地方
count.php?link_id=1
在链接中,我在“where子句”中获得“未知列'ID'”
我检查确保所有单引号而不是反引号....
编辑:@Kai Qing在评论CanSpice答案时提供的解决方案。
答案 0 :(得分:3)
我建议确保您的列实际上是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)
答案 1 :(得分:2)
您的列可能名为id
,而不是ID
。列名称区分大小写。
答案 2 :(得分:0)
$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。