我正在导入事务数据并将其保存到数据库中。有些事务数据缺少字段,因此我使用单独文件(file2.php)中的以下函数手动更新它们:
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函数:
$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的这部分代码吗?
发布于 2016-08-10 12:27:16
啊,当然,我应该早点想到的。
在函数之外建立一个连接,因此$conn在函数中不可见,只需将$conn作为参数传递给函数,所有这些都会神奇地工作。这是一个简单的范围问题!
categoryRules.php
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);
}
}现在,主要脚本应该是
$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);https://stackoverflow.com/questions/38872892
复制相似问题