我正在尝试创建一个外向链接点击计数器。在网上发现了一些代码,无法理解为什么它不更新数据库中的数字。我在这里做错了什么?
<?php
$linkid = $_GET["id"];
mysql_query("UPDATE research SET out = out + 1 WHERE id='$linkid'");
$query = "SELECT * FROM research WHERE id='$linkid'";
$result = mysql_query( $query ) or die ("Error in query: $query. ".mysql_error());
while($row = mysql_fetch_row( $result ) ) {
header ("Location:" .$row[2] );
}
?>
答案 0 :(得分:0)
了解此代码的工作原理最好的方法是学会检查这样的数据:
//connect to db here before the rest of your code
if(isset($_GET["id"]){ //only execute if GET is set
$linkid = $_GET["id"];
echo 'GET = '.$linkid.' <br/>'; //check the value to check against your database for testing
mysql_query("UPDATE research SET out= out+1 WHERE id='$linkid'") or die(mysql_error());
//or die helps detect syntax mistakes
if(mysql_affected_rows()){ //if update did occur
$query = "SELECT fieldname FROM research WHERE id='$linkid'";
//no need to use * just select the on fields you need!
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error());
if(mysql_num_rows($result)>0){ //if a row is found with that id
$row = mysql_fetch_assoc();
echo 'Field Value = '.$row['fieldname'];
//header("location:".$row['fieldname']); - temporarily commented out as headers already sent
} else { echo 'id does not exist in research table'; }
} else { echo 'update did not occur'; }
} else { echo 'GET not set!'; }
我认为你的语法没有错,但是一些检查员可以帮助解释为什么它可能不起作用!
用我的脚本检查输出并将其与数据库进行比较(确保将fieldname检查到该字段的实际名称!
它应该突出它为什么不起作用。我添加了一些注释来解释你不熟悉我所使用的一些函数名称的内容。