DB连接功能


DB Conn Function

我正在尝试一些非常简单的东西,但似乎不起作用。我想创建一个名为db_conn()的函数,这样我就可以调用它来打开mysql数据库,而不是每次需要都进行新的调用

    /**************************************
    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函数做错了什么吗?

$conn仅在函数db_conn()内部可用,它超出了函数外部的范围。

如果您启用错误报告并显示它们,您将100%注意到错误。

虽然有更好的方法可以做到这一点,但如果您想将其作为练习来做,您可以使函数将连接资源返回给调用者。

$conn=db_conn();

你的功能可以返回

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

您也可以执行此

$conn = '';
function db_conn() {
    global $conn;
    $conn = new mysqli... //the rest of your code here
}