警告:mysqli :: __ construct():PHP中的MYSQLI

时间:2017-05-09 03:52:04

标签: php sql mysqli

我对mysqli并不是很熟悉,而且我必须将我的脚本升级到mysqli,请你帮我解决一下吗?

以下代码:

    function getConnected($host,$db_user,$db_password,$db) {

       $mysqli = new mysqli($host, $db_user, $db_password, $db);

       if($mysqli->connect_error) 
         die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());

       return $mysqli;
    }
    $mysqli = getConnected("localhost", "root", " ", "test");

1 个答案:

答案 0 :(得分:0)

除了你正在混合面向对象和程序风格之外,我没有看到你的代码。 (不是我认为它会失败的原因)

只需改变一下:

die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());

到这个

die('Connect Error (' . mysqli->connect_errno . ') '. mysqli->connect_error);

你们都在OOP中。

在此之后,您应该可以执行http://php.net/manual/en/mysqli.query.php

之类的操作
$mysqli = getConnected("localhost", "root", " ", "test");
$mysqli->query('SELECT * FROM tableA');

甚至

getConnected("localhost", "root", " ", "test")->query('SELECT * FROM tableA');

或发表声明http://php.net/manual/en/mysqli.prepare.php。现在是实现预准备语句的良好实践(如果您处理用户输入,则是强制性的)。它基本上取代了转义。

if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {

    /* bind parameters for markers */
    $stmt->bind_param("s", $city);

    /* execute query */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($district);

    /* fetch value */
    $stmt->fetch();

    printf("%s is in district %s\n", $city, $district);

    /* close statement */
    $stmt->close(); }

升级到mysqli有点学习曲线,但是一旦掌握了它,你会发现它与它的前身相比有多强大。