2016-10-21 6 views
0

私はAPIを作ろうとしています。私はOpenClassRoomのチュートリアルに従ってMySQLをリクエストしており、Slim v3.2のAPIが必要です。 私はコネクションの答えを受け取っていますが、getからデータを回復したいときは "Slim Application Error"があります。それで何をするのか分かりません。 "php -S localhost:8080 -t public public/index.php"の代わりにMAMPを使用しています。私のデータベースとの接続が良いからです。 私はあなたに私のAPIを示しています。スリムなAPIは、接続後に動作しません

<?php 
use \Psr\Http\Message\ServerRequestInterface as Request; 
use \Psr\Http\Message\ResponseInterface as Response; 

require '/Users/kravennagen/Downloads/Api/api/racehistory/vendor/autoload.php'; 

$app = new \Slim\App(); 
echo "hello"; 
try{ 
    $bdd = new PDO('mysql:host=localhost;dbname=racehistory;charset=utf8', 'root', 'root', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
    echo "connexion..."; 
} 
catch(Exception $e){ 
    die('Erreur connexion BDD:' . $e->getMessage()); 
} 
echo "avant le get"; 
$app->get('/', function(){ 
    $reponse = $bdd->query('SELECT * FROM user'); 
    while($data = $reponse->fetch()){ 
    echo $data['mail']; 
    echo $data['password']; 
    } 
    $reponse->closeCursor(); 
}); 
$app->get('/connexion/{identifiant}/{password}', function($login, $pass){ 
    $reponseMail = $bdd->query('SELECT mail FROM user'); 
    $reponsePass = $bdd->query('SELECT password FROM user'); 
    echo "test1"; 
    While($donnees = $reponseMail->fetch() && $donnees = $reponsePass->fetch()){ 
     if($donnees['mail'] == $login && $donnees['password'] == $pass){ 
     echo "true"; 
      //return true; 
     } 
     else{ 
     echo "false"; 
      //return false; 
     } 
    } 
$reponsePass->closeCursor(); 
$reponseMail->closeCursor(); 
}); 

$app->get("/register/{identifiant}/{password}", function($login, $pass){ 
    $add = 'INSERT INTO user(mail, password) VALUES ($login, $pass)'; 

    if(!preg_match("#^[a-z0-9._-][email protected][a-z0-9._-]{2,}\.[a-z]{2,4}$#", $login)) 
     $errors['mail'] = 'adresse mail non valide'; 

    else if (!preg_match("#^(?=.*[A-Z])(?=.*[a-zA-Z])(?=.*\d)([\w]{8,15})$#", $pass)) 
     $errors['password'] = "le mot de passe n'est pas conforme(majuscule au debut, de 8 a 15 caractères)"; 

    else if($bdd->exec($add) === false){ 
     echo "ERREUR INSERTION"; 
    } 
    else{ 
     echo "User bien ajouté la base de donnée"; 
    } 
}); 
$app->run(); 
?> 

答えて

2

あなたが「使用」を使用してルーティングするために、あなたの$ BDD接続オブジェクトを挿入する必要があります。

$app->get('/', function() use ($bdd) { 
+1

はありがとうございました!!!!できます ! –

+0

歓迎します:-) –

関連する問題