首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP和MySql点击计数器问题?

PHP和MySql点击计数器问题?
EN

Stack Overflow用户
提问于 2009-10-17 18:50:16
回答 1查看 498关注 0票数 0

好吧,我是php和mysql的新手,我试图建立一个网页点击计数器,但是我的页面计数器没有正确更新,它得到了下面列出的警告。

代码语言:javascript
复制
Warning: mysqli_query() expects at least 2 parameters, 1 given in
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in

下面是php代码。

代码语言:javascript
复制
<?php

$page = $_SERVER['SCRIPT_FILENAME']; 

// Query member data from the database and ready it for display
$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT id page FROM mysql_counter_logs WHERE page = '$page'");

if (mysqli_num_rows($dbc) == 0) {
    $mysqli = new mysqli("localhost", "root", "", "sitename");
    $dbc = mysqli_query($mysqli,"INSERT INTO mysql_counter_logs (page) VALUES ('$page')");
    mysqli_query($dbc);
} elseif (mysqli_num_rows($dbc) == 1) {
    $mysqli = new mysqli("localhost", "root", "", "sitename");
    $dbc = mysqli_query($mysqli,"UPDATE mysql_counter_logs SET hits = hits + 1 WHERE page = '$page'");
    mysqli_query($dbc);
}

//Retreives the current count
$count = mysqli_fetch_row(mysqli_query($mysqli,"SELECT hits FROM mysql_counter_logs"));

if (!$dbc) {
    // There was an error...do something about it here...
    print mysqli_error();
} 


//Displays the count on your site
print "$count[0]";

?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-10-17 18:56:32

代码的摘录:

代码语言:javascript
复制
$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"INSERT INTO mysql_counter_logs (page) VALUES ('$page')");
mysqli_query($dbc);

首先,根据mysqli_query的手册,当用作函数时:

代码语言:javascript
复制
mixed mysqli_query  ( mysqli $link  , string $query  [, int $resultmode  ] )

这意味着您必须将$mysqli变量作为第一个参数传递,并将查询作为第二个参数传递。

我不明白的是,为什么在我复制粘贴的第三行中以这种方式使用mysqli_query,而您却在代码的其他部分正确使用它?

您确定要在这里使用该函数吗?

此外,知道哪些行收到这些错误消息可能会有所帮助;-)

检查一下您没有做任何其他“错误”的事情--比如“mysqli_query()需要至少2个参数,1个给定参数”

想一想:如果出现错误,mysqli_query将返回布尔值false

在这种情况下,不应该对mysqli_query的返回值调用mysqli_num_rows,因为它不是有效的mysqli_result --因此出现了第二条错误消息。

您将在脚本的末尾检查$dbc,但是稍微早一点检查一下可能更有趣--实际上,在每次调用mysql_query之后。

另外,作为附注:您可能不需要多次实例化mysqli类:只需实例化它一次,然后将$mysqli变量用于脚本的其余部分。

为了安全起见,为了避免麻烦,在将$page变量注入到查询中之前,您可能还希望对该变量使用mysqli_real_escape_string

哦,顺便说一句:您可能对MySQL允许使用的INSERT ... ON DUPLICATE KEY UPDATE Syntax感兴趣;-)

(也就是说,如果page是表的主键,那么至少...)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1582929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档