2016-03-26 11 views
0

私はかなり簡単なことを試していますが、うまくいかないようです。 db_conn()という関数を作成して、新しい呼び出しを行う代わりにmysqlデータベースを開くように呼び出すことができます。ここでは関数である。DB Conn関数

/************************************** 
    Open Database Connection Function. 
    ***************************************/ 
    /* Database Connection Settings */ 
    $_SESSION['servername']  = "localhost"; 
    $_SESSION['mysql_username'] = "abc123"; 
    $_SESSION['mysql_password'] = "mypass"; 
    $_SESSION['dbname']   = "dbname"; 


    function db_conn() { 

     $conn = new mysqli($_SESSION['servername'], $_SESSION['mysql_username'], $_SESSION['mysql_password'], $_SESSION['dbname']); 

     // Check connection 
     if ($conn->connect_error) { 
      die("Connection failed: " . $conn->connect_error); 

     // Test if connection succeeded 
     if(mysqli_connect_errno()) { 
      die("Database connection failed: " . 
       mysqli_connect_error() . 
       " (" . mysqli_connect_errno() . ")" 
      ); 
     } 
    } 

関数のサンプル呼び出しやデータをエコー:

 <?php 
     db_conn(); 

     $sql = "SELECT id, region FROM tbl_region;"; 
     $result = $conn->query($sql); 

     if ($result->num_rows > 0) { 
      // output data of each row 
      while($row = $result->fetch_assoc()) { 

       echo '<td width="1"><label for="delete"> 
    <input type="radio" name="region" id="region" value="'.$row["id"].'"> 
</label></td>'; 

       echo '<td align="left" valign="top"><p>'.$row["region"].'</p></td></tr>'; 
      } 
     } 

     ?> 

私はそれが上記のコードで停止し、エラーが表示されないページをテスト

。 db_conn関数で何が間違っているのか教えてください。

+0

を行うことができますか? –

答えて

2

$connは、あなたの関数db_conn()の中でのみ利用可能ですが、範囲外です。

エラー報告を有効にして表示すると、エラーは100%になります。

これを実行するより良い方法がありますが、エクササイズとして実行する場合は、関数が呼び出し元に接続リソースを返すようにすることができます。

$conn=db_conn(); 

そして、あなたの関数が

function db_conn() { 
// body 
return $conn; 
} 
+0

これはそれがうまくいかないことを意味しますか?それとももし私がそれをする必要があるのだろうか?または、セッション変数を作成して、ページにその値が表示されるようにする必要がありますか? –

+0

あなたは私がそれを正しくやっているように私がより良い方法を教えてくれますか?私はこれが最善の方法だと思った。再度、感謝します! –

+0

1つのデザインパターンは依存性注入と呼ばれ、ここを通ることができます。https://codeinphp.github.io/post/dependency-injection-in-php/ –

0

それを返すことができますもするphpinfoでショーをするerror_reportingん何この

$conn = ''; 
function db_conn() { 
    global $conn; 
    $conn = new mysqli... //the rest of your code here 
} 
関連する問題