2011-06-02 48 views
1

我最近有一個自定義URL縮短腳本,但我一直有一個問題。它跟蹤使用該腳本的網址的點擊#:調用成員函數execute()在非對象更新上ammount

<?php 
function curPageName() { 
return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1); 
} 


$pagenam = $_SERVER["SCRIPT_NAME"]; 
$moo = pathinfo($pagenam,PATHINFO_DIRNAME); 
$wof = str_ireplace("/urls/","",$moo); 
$woof = str_ireplace("/","",$wof); 
include("../../connect.php"); 
$statement = $db->prepare("SELECT clicks FROM url WHERE refer = '$woof'"); 
$statement->execute(); 
$result = $statement->fetchObject(); 
$clicks = $result->clicks; 
$clicks++; 
$statement = $db->prepare("UPDATE url SET clicks = '$clicks', date = NOW() WHERE refer = '$woof'"); 
$statement->execute(); 

?> 

然而,只要點擊一個網址,我得到的錯誤:

Fatal error: Call to a member function execute() on a non-object in /home/kgoco/public_html/ping.php on line 18

任何幫助將不勝感激。您可以在http://kgo.co處看到正在運行的網站 - 提前感謝您。

+2

moo,wof和woof,巨大的變量名稱 – Dani 2011-06-02 00:45:13

+0

看起來您的$ db-> prepare(...)方法沒有返回對象,因此無法調用$ statement-> execute()。你能提供一個var_dump($語句);在你調用$ statement = $ db-> prepare(...)之後?然後我們可以看到prepare()方法返回的內容。 – 2011-06-02 00:45:15

+0

你在使用什麼數據庫庫? – Jodes 2011-06-02 00:46:15

回答

0

如果$statement不是對象,那麼您的錯誤是告訴您不能撥打​​。
如果$statement是不是一個對象,那麼你的代碼,這部分返回FALSE

$statement = $db->prepare("SELECT clicks FROM url WHERE refer = '$woof'");

所以,這條線之後,你應該鍵入以下內容:
var_dump($statement);
看它是什麼實際上返回。

相關問題