对非对象更新弹药计数调用成员函数execute()


Call to a member function execute() on a non-object updating ammount

我最近制作了一个自定义的URL缩短脚本,但我一直有问题。它使用以下脚本跟踪URL上的点击次数:

<?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();
?>

然而,每当点击URL时,我都会收到错误:

致命错误:调用成员函数对中的非对象执行()/主页/kgoco/public_html/ping.php第18行

如有任何帮助,我们将不胜感激。您可以在上查看该网站的运行情况http://kgo.co-提前谢谢。

您的错误是告诉您,如果$statement不是对象,则不能调用execute()
如果$statement不是对象,那么这部分代码将返回FALSE:

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

因此,在这一行之后,您应该键入以下内容:
var_dump($statement);
看看实际返回的是什么