当前位置: 首页 > 面试题库 >

我的自定义php函数出了点问题

裴嘉良
2023-03-14
问题内容

好的,所以我尝试创建一个自定义函数,该函数将为最终用户在iframe中回显网站网址。

该脚本必须检查用户是否已经查看过该站点,如果已经看到该站点,则不再显示该站点,而是从数据库中获取另一个站点url等。

到目前为止,这是我想出的:

function get_urls() {
    require 'config.php';
    global $con;
    global $currentUsername;
    $con = mysqli_connect($hostname, $dbusername, $dbpassword, $dbname);
    $query = "SELECT site_url FROM sites WHERE site_url IS NOT NULL";
    $result = mysqli_query($con, $query);

    // Get all the site urls into one array
        $siteUrls = array();
        $index = 0;
        while($row = mysqli_fetch_assoc($result)) {
            $siteUrls[$index] = $row;
            $index++;
        }

    $query2 = "SELECT site_url FROM views WHERE user = '$currentUsername' AND site_url IS NOT NULL";
    $result2 = mysqli_query($con, $query2);

    // Get urls the user has already seen into another array
        $seenUrls = array();
        $index = 0;
        while($row2 = mysqli_fetch_assoc($result2)) {
            $seenUrls[$index] = $row2;
            $index++;
        }

    // Compare the two arrays and create yet another array of urls to actually show
    $urlsToShow = array_diff($siteUrls, $seenUrls);

    if (!empty($urlsToShow)) {
        // Echo the url to show for the iframe within browse.php and add an entry to the database that the user has seen this site
        foreach ($urlsToShow as $urlToShow) {
            echo $urlToShow;
            $query = "INSERT INTO views VALUES ('', '$currentUsername', '$urlToShow')";
            mysqli_query($con, $query);
            break;
        }
    }
    // Show the allSeen file when all the ads are seen
    else {echo 'includes/allSeen.php';}
    mysqli_free_result($result);
    mysqli_close($con);
}

我目前发现了两个错误。首先,$ siteUrls和$ seenUrls都可以,但是当我使用进行比较时,array_diff它将返回一个空数组。

其次,脚本不会将站点url写入数据库,因为$urlToShow是数组而不是单个url吗?


问题答案:

我认为问题出在您的代码中,您正在创建$ siteUrls,$
seenUrls数组。mysqli_fetch_assoc()函数将为您提供结果行作为关联数组。因此,如果您想在while循环中更改某些代码。请修改

while($row = mysqli_fetch_assoc($result)) {
        $siteUrls[$index] = $row;
        $index++;
}

while($row = mysqli_fetch_assoc($result)) {
        $siteUrls[$index] = $row['site_url'];
        $index++;
    }

并且在第二个while循环中。改变这个

while($row2 = mysqli_fetch_assoc($result2)) {
        $seenUrls[$index] = $row2;
        $index++;
}

while($row2 = mysqli_fetch_assoc($result2)) {
        $seenUrls[$index] = $row2['site_url'];
        $index++;

并尝试



 类似资料:
  • 问题内容: 我是PHP的新手,所以我的功能有一个小问题。我有这行代码: 无论如何,当我尝试这段代码时,我总是收到一条错误消息,指出第11行(代码的粗体部分)有错误,并且没有回显任何变量。我猜它给了我这个错误,因为我的变量没有在函数内部定义,但是我需要在函数外部定义它,所以有办法吗? 问题答案: 这是因为您正在函数内部使用变量(仅存在于全局范围内)。 有关更多信息,请参见PHP手册页上的变量范围。

  • 本文向大家介绍php自定义urlencode,urldecode函数实例,包括了php自定义urlencode,urldecode函数实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php自定义urlencode,urldecode函数。分享给大家供大家参考。具体如下: 希望本文所述对大家的php程序设计有所帮助。

  • 我做了这个自定义函数,并把它放在全局之外,这通常会工作。我也试着在主异步木偶函数中移动它,但也不起作用。这是一个简单的函数。在每个page evaluate函数中,我调用它并传递选择器。但是,它的说法没有定义和promise拒绝,这是奇怪的,因为函数不是promise....请帮助 我尝试将函数转换为异步函数,添加了一个新的参数页。然后,我将async添加到我的评估函数中,然后将puppeteer

  • XQuery提供编写自定义函数的功能。 下面列出了创建自定义函数的准则。 使用关键字来定义函数。 使用当前XML架构中定义的数据类型 将函数体包含在花括号内。 使用XML命名空间前缀函数的名称。 创建自定义函数时使用以下语法。 语法 示例 以下示例显示如何在XQuery中创建用户定义的函数。 XQuery表达式 输出结果 - 验证结果 要测试上述函数,用上面的XQuery表达式替换books.xq

  • 我在理解group_by如何在tidyverse中工作时遗漏了一些东西。示例将阐明: 我已经创建了下面的函数,它采用很少的参数,并计算tibble内部的最佳权重(可能不是最漂亮的,但似乎工作): 当我在tibble中只有一个组时,这个函数可以很好地工作。我创建函数的方法是尝试通过在一个函数上进行测试来实现它,希望在我稍后对数据进行切片时它会起作用。 然后,我希望可以使用mutate为我的多个组创建

  • 2. 自定义函数 我们不仅可以调用C标准库提供的函数,也可以定义自己的函数,事实上我们已经这么做了:我们定义了main函数。例如: int main(void) { int hour = 11; int minute = 59; printf("%d and %d hours\n", hour, minute / 60); return 0; } main函数的特殊之处在于执行程序时它自动