2016-08-10 12 views
0

私はトランザクションデータをインポートしてデータベースに保存しています。トランザクションデータの一部はフィールドが欠落しているので、私は手動で別のファイルから次の関数を使用してそれらを更新しています(file2.php):別のphpファイルからmysqli関数を呼び出す

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内のビットをクリーンアップします

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

そうするとき、私は次のような応答を取得しています:

Error: UPDATE Transactions SET cat1 = 'Shops', cat2 = 'Supermarkets and Groceries' WHERE name LIKE '%shipt%'

Error: UPDATE Transactions SET cat1 = 'Shops', cat2 = 'Supermarkets and Groceries' WHERE name LIKE '%shipt%'

Error: UPDATE Transactions SET cat1 = 'Shops', cat2 = 'Food and Beverage Store', cat3 = 'Beer, Wine and Spirits' WHERE name LIKE '%liquor%'

Error: UPDATE Transactions SET cat1 = 'Service', cat2 = 'Telecommunication Services' WHERE name LIKE '%vzwrls%'

Error: UPDATE Transactions SET cat1 = 'Recreation', cat2 = 'Gyms and Fitness Centers' WHERE name LIKE '%classpass%'

それは機能のように思えるが、ファイル2.phpで実行されて使用してファイル1.php上FILE2関数を呼び出しますそれらがfile1.phpに到達する前に、データベースリンクを開いて、アクセスし、閉じます。それらをファイル1にインポートする方法はありますか?ファイル2.phpの作成以外に、ファイル1.phpのコードのこの部分をクリーンアップするより良い方法はありますか?

+1

する必要がありますあなたはより良い '「categoryRules.php」にあるものたちを示していました;'それはどこの問題であると思われるよう – RiggsFolly

+0

私はあなたのファイル構造を取得していません。なぜファイル1とファイル2で、クラスを使用していないのですか? –

+0

この行から来ているようなエラーです。 'echo"エラー: "。 $ sql。 "
" mysqli_error($ conn); ' – RiggsFolly

答えて

0

もちろんああ、私はこれ以前

考えている必要がありますあなたは機能外の接続を行うので$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); 
関連する問題