【问题标题】:Can't call a function from another script because of a var is local由于 var 是本地的,因此无法从另一个脚本调用函数
【发布时间】:2016-07-16 05:42:55
【问题描述】:

我遇到了与主题相同的问题,这是代码。

脚本 A:

$con = mysqli_connect('localhost', 'root', '', 'mysql');

以上内容很好,所以我在这里排除了die() 子句,以便大家更容易阅读。

脚本 B:

function get_news(){
/* a select query */
$result = mysqli_query($con, $news_sql)
or die(mysqli_error($con);
/* other codes follow */
};

脚本 C:

require_once "Script B";
get_news();

上述失败,经过一些测试,我确认问题出在脚本 B 中的 var $con 上。

至少有两种方法可以解决这个问题:

a) 将 $con 替换为 mysqli_connect(); b) 在脚本 B 的函数中再次定义 $con

虽然这解决了我的问题,但似乎两者都不是好的做法。我应该将$con 定义为$_global var 吗?您能否建议其他更好的方法。

非常感谢!

脚本B原代码:

function get_news(){
    $news_sql = "SELECT * from pink_news ORDER BY news_id DESC LIMIT 3";
    $result = mysqli_query($con, $news_sql)
    or die(mysqli_error($con));
    while ($rows = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    echo "<div class='news'><ul><li>";
    echo "<img src='" . $rows['img'] . "'>";
    echo "<h2>" . $rows['headline'] . "</h2>";
    echo "<p>" . $rows['content'] . "</p>";
    echo "</li></ul></div>";
    };
};

【问题讨论】:

  • 将其赋值为全局变量 global $con;或者在您的页面中包含脚本 a 并将参数传递给函数 get_new($con);
  • 非常感谢 jothi,这有帮助!

标签: php function scope


【解决方案1】:

script A 包含在您的页面中

include 'connection.php';

然后将$con 传递给你的函数

get_news($con);// pass connection to your function

在脚本 B 中使用它

function get_news($con){

【讨论】:

    【解决方案2】:

    require_once "Script A" 添加到脚本 B.. 应该可以解决问题

    【讨论】:

    • 谢谢你,Manish,祝你有美好的一天:)
    猜你喜欢
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多