首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从另一个php文件调用mysqli函数

从另一个php文件调用mysqli函数
EN

Stack Overflow用户
提问于 2016-08-10 12:01:12
回答 1查看 414关注 0票数 0

我正在导入事务数据并将其保存到数据库中。有些事务数据缺少字段,因此我使用单独文件(file2.php)中的以下函数手动更新它们:

代码语言:javascript
复制
function categoryRules() {
    //rules for transactions
    $sql = "UPDATE Transactions 
                SET cat1 = 'Shops', cat2 = 'Supermarkets and Groceries'
            WHERE name LIKE '%shipt%'";
    if (mysqli_query($conn, $sql)) {
        echo "SHIPT UPDATE PERFORMED";
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }   
    $sql = "UPDATE Transactions 
                SET cat1 = 'Shops', cat2 = 'Food and Beverage Store', cat3 = 'Beer, Wine and Spirits'
            WHERE name LIKE '%liquor%'";
    if (mysqli_query($conn, $sql)) {
        echo "LIQUOR UPDATE PERFORMED";
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }
    $sql = "UPDATE Transactions 
                SET cat1 = 'Service', cat2 = 'Telecommunication Services'
            WHERE name LIKE '%vzwrls%'";
    if (mysqli_query($conn, $sql)) {
        echo "VERIZON UPDATE PERFORMED";
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }

    $sql = "UPDATE Transactions 
                SET cat1 = 'Recreation', cat2 = 'Gyms and Fitness Centers'
            WHERE name LIKE '%classpass%'";
    if (mysqli_query($conn, $sql)) {
        echo "VERIZON UPDATE PERFORMED";
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }
}

为了清理file1.php中的代码,我使用以下方法调用文件1.php上的file2函数:

代码语言:javascript
复制
$conn = mysqli_connect($host, $user, $pass, $database);
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
include 'categoryRules.php';
categoryRules();
mysqli_close($conn);

当我这样做时,我会得到以下的回应:

Error:更新事务集cat1 =‘cat1’,cat2 =‘超市和杂货’,其中的名称为'%shipt%‘ 错误:更新交易设置为cat1 =‘商店’,cat2 =‘超市和杂货’,其中的名称为'%shipt%‘ 错误:更新事务设置为cat1 =‘营业’,cat2 =‘食品饮料商店’,cat3 =‘啤酒,葡萄酒和烈酒’,其中的名称如‘%白酒%’ 错误:更新事务设置为cat1 =‘服务’,cat2 =‘电信服务’,其中名为'%vzwrls%‘ 错误:更新事务设置cat1 = 'Recreation',cat2 =‘健身房和健身中心’,其中名为'%classpass%‘

函数似乎在文件2.php中运行,然后才进入file1.php,这是我打开、访问和关闭数据库链接的地方。有办法将它们导入文件1吗?除了创建文件2.php之外,还有更好的方法来清理文件1.php的这部分代码吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-10 12:27:16

啊,当然,我应该早点想到的。

在函数之外建立一个连接,因此$conn在函数中不可见,只需将$conn作为参数传递给函数,所有这些都会神奇地工作。这是一个简单的范围问题!

categoryRules.php

代码语言:javascript
复制
function categoryRules($conn) {    // <-- add parameter
    //rules for transactions
    $sql = "UPDATE Transactions 
                SET cat1 = 'Shops', cat2 = 'Supermarkets and Groceries'
            WHERE name LIKE '%shipt%'";
    if (mysqli_query($conn, $sql)) {
        echo "SHIPT UPDATE PERFORMED";
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }   
    $sql = "UPDATE Transactions 
                SET cat1 = 'Shops', cat2 = 'Food and Beverage Store', cat3 = 'Beer, Wine and Spirits'
            WHERE name LIKE '%liquor%'";
    if (mysqli_query($conn, $sql)) {
        echo "LIQUOR UPDATE PERFORMED";
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }
    $sql = "UPDATE Transactions 
                SET cat1 = 'Service', cat2 = 'Telecommunication Services'
            WHERE name LIKE '%vzwrls%'";
    if (mysqli_query($conn, $sql)) {
        echo "VERIZON UPDATE PERFORMED";
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }

    $sql = "UPDATE Transactions 
                SET cat1 = 'Recreation', cat2 = 'Gyms and Fitness Centers'
            WHERE name LIKE '%classpass%'";
    if (mysqli_query($conn, $sql)) {
        echo "VERIZON UPDATE PERFORMED";
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }
}

现在,主要脚本应该是

代码语言:javascript
复制
$conn = mysqli_connect($host, $user, $pass, $database);
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
include 'categoryRules.php';
// add $conn parameter to the call
categoryRules($conn);           
mysqli_close($conn);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38872892

复制
相关文章

相似问题

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