【问题标题】:DB Conn FunctionDB连接函数
【发布时间】:2016-03-26 02:51:51
【问题描述】:

我正在尝试一些非常简单的方法,但似乎不起作用。我想创建一个名为 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 函数时做错了什么吗?

【问题讨论】:

  • error_reporting 在 phpinfo 中显示什么?

标签: php mysql database


【解决方案1】:

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

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

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

$conn=db_conn();

你的函数可以返回它

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

【讨论】:

  • 好的,这是否意味着它不起作用?或者如果可以的话,我需要做什么?还是我需要将 conn 设置为 Session 变量,以便页面可以看到它的值?
  • 你说有更好的方法我是 PHP 新手,你能告诉我一个更好的方法,所以我做得对吗?我认为这是最好的方法。再次感谢!
  • 一种设计模式叫做依赖注入,你可以在这里查看codeinphp.github.io/post/dependency-injection-in-php
  • 如果你是 PH​​P 新手,我认为这对你有很大的帮助,让你有一个强大的基础phpdelusions.net/pdo
【解决方案2】:

你也可以这样做

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

【讨论】:

    猜你喜欢
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 2010-11-30
    • 2021-11-23
    相关资源
    最近更新 更多