2011-05-14 60 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