2017-01-27 26 views
0

私はこの分野ではあまり経験がありませんので、私は助けを求めています。mysqlをmysqliに変更し、データベースに接続できません

最近ホストを変更し、スクリプトが機能しなくなりました。すべてのファイルを移動した後、新しいホストはmysqlが推奨されないと言ったので、少し検索した後、mysqliでmysqlを変更することにしました。しかし、今私は新しいエラー(エラー選択DB)を取得します。私はmysqliを接続するためにスクリプトを細かく変更しなければならないと思います。これは$リンクする必要がありますhttp://php.net/manual/en/mysqli.select-db.php最初のパラメータに説明したように、私は

<?php 
 

 
class Model{ 
 
\t var $conn; 
 
\t 
 
\t public function openDb($dbhost, $dbuser, $dbpass, $dbname, $conn) 
 
\t { 
 
\t \t //echo "Se creo la conexion "; 
 
\t \t $conn = mysqli_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysqli'); 
 
\t \t mysqli_select_db($dbname) or die('Error select db'); 
 
\t \t mysqli_query("SET NAMES utf8"); 
 
\t \t return $conn; 
 
\t } 
 

 
\t public function closeDb($conn) 
 
\t { 
 
\t \t mysqli_close($conn); 
 
\t } 
 

 
\t public function query($query) 
 
\t { 
 
\t \t if ($result = mysqli_query($query) or die("Error de Query: </br >" . mysqli_error()."<br/>".$query)) { 
 
\t \t //if ($result = mysqli_query($query)) { 
 
\t \t } else { 
 
\t \t \t $result = false; 
 
\t \t } 
 
\t \t return $result; 
 
\t } 
 
\t 
 
\t function __construct() 
 
\t { 
 
\t \t $this->openDb(dbhost, dbuser, dbpass, dbname, $conn); 
 
\t } 
 
\t 
 
\t //insertGenerico con indedices asiciativos 
 
    function insertar($tabla, $datos) 
 
    { 
 
     $columnas = implode(", ", array_keys($datos)); 
 
     $valores = implode(", ", $datos); 
 
     $query = "INSERT INTO $tabla 
 
     ($columnas) 
 
     VALUES 
 
     (" . $valores . ")"; 
 
     return $this -> query($query); 
 
    } 
 

 
    function insertarRelacionArray($tabla, $tablaRelacion, $datos) 
 
    { 
 
     foreach ($datos as $row) { 
 
      $query = "INSERT INTO $tabla 
 
      ($tablaRelacion[0],$tablaRelacion[2]) 
 
      VALUES 
 
      ($tablaRelacion[1],$row)"; 
 
      //echo '<br>'.$query; 
 
      $this -> query($query); 
 
     } 
 
    } 
 

 
    //getGenerico 
 
    function get($tabla, $where = false, $order = false) 
 
    { 
 
     $query = "SELECT * 
 
     FROM $tabla 
 
     $where 
 
     $order"; 
 
     return $this -> query($query); 
 
    } 
 

 
    //deleteGenerico 
 
    function delete($tabla, $id, $idTag = false) 
 
    { 
 
    \t if($idTag==false) 
 
      $idTag = "id"; 
 
     $query = "DELETE FROM $tabla 
 
     WHERE $idTag = $id"; 
 
     return $this -> query($query); 
 
    } 
 

 
    //update generico 
 
    function update($tabla, $datos, $id, $idTag = false) 
 
    { 
 
     $columnas = array_keys($datos); 
 
     $SET = 'SET '; 
 
     $i = 0; 
 
     foreach ($datos as $key => $value) { 
 
      if (next($datos)) { 
 
       $SET .= "$key = $value ,"; 
 
      } else { 
 
       $SET .= "$key = $value "; 
 
      } 
 
     } 
 
     if($idTag==false) 
 
      $idTag = "id"; 
 
     $query = "UPDATE $tabla $SET WHERE $idTag = $id;"; 
 
     return $this -> query($query); 
 
    } 
 

 
\t 
 
} 
 
?>

答えて

1

を持つファイルです。

bool mysqli_select_db (mysqli $link , string $dbname) 

ので

mysqli_select_db($conn, $dbname) or die('Error select db'); 

mysqli_select_db($dbname) or die('Error select db'); 

を変更し、それが動作するはずです。 私はあなたの_construct関数でも$ connを返す必要があると思います。あるいは、オブジェクトを$(conn)$ connに格納しておけば、もう一度使うことができます。あなたも

mysql_query($query) 
to 
mysqli_query($conn, $query) 

を更新する必要があります

加えて(感謝のKiJéyへ)

mysql_real_escape_string($string) 
to 
mysqli_real_escape_string ($conn, $string) 
私はまったく同じ理由でまったく同じ操作を行っているので、私は補完的な情報を追加します
+1

( mysql_query()とmysql_real_escape_string()を呼び出すたびに、新しいプロトタイプ(php.netの説明どおり)に一致するように更新する必要があるので、私のコードをmysqlからmysqliに変更しました。 –

関連する問題