【问题标题】:cannot access database using php class无法使用 php 类访问数据库
【发布时间】:2013-08-05 15:58:59
【问题描述】:

我创建了一个类来访问我的数据库。简化的类如下(我将其命名为 dbaccess.php)

class dbaccess {
function read($db) {
    $con = mysqli_connect($db);
    if (mysqli_connect_errno()){
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }
    $result = mysqli_query($con,"SELECT * FROM equipment");
    while($row = mysqli_fetch_array($result)){
        $print = $print . $row['ID'] . " " . $row['name'] . " " . $row['new_price'] . " " . $row['residual_value'] . "<br>";
        }
    echo $print;
    mysqli_close($con);
    }
}

要访问该类,我使用此代码

include './dbaccess.php';
//define db address
$add = '"localhost","myuser","mypassword","mydbname"';
$db = new dbaccess;
$db->read($add);

此代码生成

Failed to connect to MySQL: Unknown MySQL server host '"localhost","myuser","mypassword","mydbname"'(2)

我不知道如何解决它,这里有人可以帮助我吗?

【问题讨论】:

  • 您需要将每个值作为单独的参数传入,而不是作为参数字符串。
  • 很清楚,但我认为我不能在一个字符串中定义所有参数
  • 这是正确的......你不能。您的读取方法必须有 4 个不同的参数,$host、$user、$password、$db,当您调用 mysqli_connect 时分别传递这些参数中的每一个。目前您正在传递一个字符串参数,因此它正在尝试连接到 "localhost","myuser","mypassword","mydbname" 上的数据库

标签: php database class


【解决方案1】:

您将单个字符串传递给mysqli_connect。您需要将"localhost""myuser"、...作为单独的变量传递。

http://php.net/manual/en/function.mysqli-connect.php

【讨论】:

  • 好的,我试试。谢谢
【解决方案2】:

我和你有类似的东西,从 Dropbox 下载我的文件,然后看看里面 DB Connect

【讨论】:

  • 太好了,你三年前就做到了。谢谢。
【解决方案3】:
class dbaccess {
    function read($db) {
        $con = mysqli_connect($server, $user, $password, $dbname);
(...)

那么在你的代码中,你应该划分参数。

include './dbaccess.php';
//define db address
$db = new dbaccess;
$db->read("localhost","myuser","mypassword","mydbname");

REF

【讨论】:

    【解决方案4】:

    最好将主机、用户名、密码和数据库存储在单独的变量中,如下所示:

    $host = "localhost";
    $user = "myuser";
    $pass = "mypassword";
    $data = "mydbname";
    $db = new dbaccess(); // <-- It's good practice to use parentheses in the constructor statement.
    $db->read($host,$user,$pass,$data);
    

    然后你的dbaccess 类的实现可能更像这样:

    $con = mysqli_connect($host,$user,$pass,$data);
    

    这是因为mysqli_connect 函数将主机、用户名等作为单独的参数,而不是作为单个字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 2021-12-07
      • 2017-06-17
      • 1970-01-01
      • 2020-10-03
      • 2021-05-19
      • 2019-08-26
      相关资源
      最近更新 更多