2017-12-18 18 views
-1

データベースに接続するためにphpを使用したときに、「データベース接続に失敗しました」というエラーが突然発生しました。助けて誰のおかげで... PHPでデータベースへMySQLデータベースとphpデータベースの接続エラー

<?php 
$connection = mysqli_connect('localhost', 'root','','test'); 
if (!$connection){ 
    die("Database Connection Failed" . mysqli_error($connection)); 
} 
$select_db = mysqli_select_db($connection, 'test'); 
if (!$select_db){ 
    die("Database Selection Failed" . mysqli_error($connection)); 
} 


<?php 
    // 
    require('database.php'); 
    $connection = mysqli_connect('localhost', 'root','','test'); 
    // If the values are posted, insert them into the database. 
    if (isset($_POST['Register'])){ 
     $username = $_POST['username']; 
    $email = $_POST['email']; 
     $password = $_POST['password']; 

     $query = "INSERT INTO `user` (username, email, password) VALUES ('$username', '$email', '$password')"; 
     //echo $query; 
     $result=mysqli_query($connection,$query); 
     if($result){ 
      $smsg = "User Created Successfully."; 
     }else{ 
      $fmsg ="User Registration Failed"; 
     } 
    } 
    ?> 
+0

'$ select_db = mysqli_select_db( 'テスト' $接続を)お役に立てば幸いです。 if(!$ select_db) 'が不要な場合は、最初の行に4つの引数をすべて使用しています。なぜあなたはまた後で再接続しようとしていますか? –

+0

注: 'mysqli'へのオブジェクト指向インタフェースは冗長ではなく、コードを読みやすく監査しやすくなります。また、古いmysql_queryインタフェースと混同しやすくなりません。手続き型スタイルに多額の投資をする前に、それを切り換える価値があります。例: '$ db = new mysqli(...)'と '$ db-> prepare(" ... ")'手続き型インタフェースはmysqli' APIが導入されたPHP 4時代のアーティファクトであり、コード。 – tadman

+0

**警告**:mysqliを使用する場合は、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してクエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'、' $ _GET'、**任意の**ユーザデータを直接クエリーに入れないでください。誰かがあなたのミスを悪用しようとすると非常に危険です。 – tadman

答えて

-1

接続は、それが代わりに手続き型のDBオブジェクトを使用するために、今日より良いです(passwdファイル、ホスト、データベース・ユーザー、パスワード、データベース名)4つのパラメータを必要とします"古い" 行動:

function connection(){ 
    try{ 
     //host, user, passwd, DB name) 
     $mysqli = new mysqli("localhost", $dbUser, $passwd, $dbName); 
     if (!$mysqli->set_charset("utf8")) $msg = "error charset mySQLi"; else $msg = "Set UTF-8 ok"; 
     return $mysqli; 
    } 
    catch (Exception $mysqlin){ 
     echo "Error stablishing connection with database ".$mysqlin->getMessage(); 
    } 
} 

次のように簡単に接続することができます。

$sql = "SELECT * FROM users;"; 
     if(!$result = connection()->query($sql)) echo "db query error"; else "query ok"; 
     $rs = mysqli_fetch_assoc($result); 
//do whatever and, to get next line of results: 
if($rs!=''){ 
    $rs = mysqli_fetch_assoc($result); 
} 

をだからあなたは$ RS []アレイ上の結果の行を取得します。

編集:あなたはセキュリティを適用する必要があります。これは、それを気にせずに簡単な接続です。それのためにPHPの公式Webページにmysqliのバインドのparamsを確認してください: http://php.net/manual/en/mysqli-stmt.bind-param.php

それは

関連する問題