【问题标题】:PHP script no longer writing to databasePHP脚本不再写入数据库
【发布时间】:2016-09-15 07:48:26
【问题描述】:

我有一个 PHP 脚本来记录页面上的点击并将计数存储在表格中。每个页面,每个会话记录一次点击。

如果在点击计数更新之前访问过页面。

如果页面没有点击,因此在表格中不存在,则会创建一个条目,计数从 1 开始。

它可以工作,但现在有点坏了 - 它正在更新数据库中已有条目的页面的点击次数,但没有为新页面添加条目。

谁能看到我哪里出了问题以及如何解决它?

代码;

//start a PHP session
//this prevents spamming the click count by refreshing the page
session_start();


//create current page constant
$curPage = mysql_real_escape_string(htmlspecialchars($_SERVER['REQUEST_URI']));
$title =  '0';

//set number of clicks variable to 0
$clicks = 0;

//do not recount if page currently loaded
if($_SESSION['page'] != $curPage) {
   //set current page as session variable
   $_SESSION['page'] = $curPage;

   //try to connect to MySQL server
   if(!$link = mysql_connect($host, $user, $pass)) {
      echo "Could not connect to MySQL server. Check your login information; the MySQL server may also be offline or temporarily overloaded.";
   }
   //try to select database
   elseif(!mysql_select_db($dbname)) {
      echo "Cannot select database.";
   }
   else {
      //get current click count for page from database;
      //output error message on failure
      if(!$rs = mysql_query("SELECT * FROM click_count WHERE page_url = '$curPage'")) {
         echo "Could not parse click counting query.";
      }
      //if no record for this page found,
      elseif(mysql_num_rows($rs) == 0) {
         //try to create new record and set count for new page to 1;
         //output error message if problem encountered
         if(!$rs = mysql_query("INSERT INTO click_count (page_url, page_count) VALUES ('$curPage', 1)")) {
            echo "Could not create new click counter for this page.";
         }
         else {
            $clicks = 1;
         }
      }
      else {
         //get number of clicks for page and add 1
         $row = mysql_fetch_array($rs);
         $clicks = $row['page_count'] + 1;
         //update click count in database;
         //report error if not updated
         if(!$rs = mysql_query("UPDATE click_count SET page_count = $clicks WHERE page_url = '$curPage'")) {
            echo "Could not save new click count for this page.";
         }
      }
   }
}

更新:看来问题可能与我的 htaccess 重写有关,但我不确定为什么。

【问题讨论】:

    标签: php mysql session


    【解决方案1】:

    您应该调试您的代码以找出问题所在。如果不是向数据库添加新页面,可能代码永远不会满足这个条件:

    elseif(mysql_num_rows($rs) == 0)...
    

    首先要做的是在代码中添加一行来检查条件是否真的满足,如下所示:

    $rs = mysql_query("SELECT * FROM click_count WHERE page_url = '$curPage'");
    echo "\n<hr>DEBUGGING: rs=$rs";
    if(!$rs) {
      echo "Could not parse click counting query.";
    }...
    

    $rs 在添加新页面时应该为零。否则,继续调试以了解为什么它与零不同。

    【讨论】:

    • 调试时似乎没有显示任何内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 2020-01-16
    相关资源
    最近更新 更多