2011-05-14 129 views
2

这个脚本应该从Mysql中获得当前的流行度,为该数字添加一位数然后更新它。但是这没有发生,它只返回'6'任何想法为什么?为什么这个PHP脚本只返回数字6?

来源:

<?php 
include_once("../scripts/config.php"); 


$url = mysql_real_escape_string($_POST['url']); 
preg_match("/id=(\\d+)/", $url, $matches); 
$like = $matches[1]; 
$current_pop = mysql_query("SELECT pop FROM likes WHERE id=$like") or die ("Query failed: " . mysql_error()); 

$one = '1'; 

$pop = $current_pop + $one; 

print $pop; 
$update = mysql_query("UPDATE likes SET pop = ".$pop." WHERE id = ".$like."") or die ("Query failed: " . mysql_error()); 

?> 
+0

你从哪里得到6? $ pop包含6个?为什么不''“更新喜欢SET pop = pop + 1 WHERE id = $ like。” ? – 2011-05-14 18:04:23

+0

他们都是一个人,只要脚本跑了,他们都跳到了6,并且不会再走得更高。 – user663049 2011-05-14 18:06:13

回答

1

您需要使用mysql_fetch_array(),以从第一行获得的价值:

mysql_query("UPDATE likes SET pop=(pop+1) WHERE id=$like") or die ("Query failed: " . mysql_error()); 
0

尝试:

$row = mysql_fetch_array($current_pop); 
$current_pop = $row[0]; 

你可以,但是,只有一个SQL查询更新弹出值

<?php 
include_once("../scripts/config.php"); 


$url = mysql_real_escape_string($_POST['url']); 
preg_match("/id=(\\d+)/", $url, $matches); 
$like = $matches[1]; 
$current_pop = mysql_query("SELECT pop FROM likes WHERE id=$like") or die ("Query failed: " . mysql_error()); 
$row = mysql_fetch_assoc($result) 
$one = 1; 

$pop = $row["pop"] + $one; 

print $pop; 
$update = mysql_query("UPDATE likes SET pop = ".$pop." WHERE id = ".$like."") or die ("Query failed: " . mysql_error()); 

?> 
1

的mysql_query返回到资源不是pop字段的结果的参考您的查询。

你需要做这样的事情......

$result = mysql_query("SELECT pop FROM likes WHERE id=$like") or die ("Query failed: " . mysql_error()); 
if ($result) { 
    $row = mysql_fetch_assoc($result); 
    $current_pop = $row['pop']; 
} else { 
    // handle error here 
} 

你也应该在你们这样原始的SQL查询使用mysql_real_esacpe_string周围的任何变量。

1

应该

<?php 
include_once("../scripts/config.php"); 

$url = mysql_real_escape_string($_POST['url']); 

preg_match("/id=(\\d+)/", $url, $matches); 

$current_pop = mysql_query("UPDATE likes SET pop=pop+1 WHERE id='{$matches[1]}'") or die ("Query failed: " . mysql_error()); 

?> 
+0

你的更新声明是错误的。 “喜欢”就是桌子,“流行”这个领域。 – Mat 2011-05-14 18:17:02

+0

谢谢,我现在修复了它 – SimonQuest 2011-05-14 18:26:10