2017-05-09 148 views
-2

我对mysqli不是很熟悉,而且我必须将脚本升级到mysqli,请你帮我分类一下吗?警告:mysqli :: __ construct():PHP中的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"); 
+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的,但一旦你得到了它的窍门,你会看到它是如何强劲相比,它的前身。