2016-12-22 7 views
0

私はPHPスリムフレームワークに新たなんだと(データベースがまだエラーを取得して、存在している)私は、データベースに接続するためのコードを書いたが、それは、コンソールに次のエラーが表示されます。PHP Slimフレームワークを使用してデータベースに接続できないのはなぜですか?

enter image description here

ここに私のコードです:

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

require '../vendor/autoload.php'; 

function dbConnect(){ 
    $host='127.0.0.1'; 
    $user='root'; 
    $pass=''; 
    $dbname='testdbmysql'; 
    $pdo= new PDO("mysql:host=$host; dbname= $dbname", $user, $pass); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
    return $pdo; 
} 

$app = new \Slim\App; 
$app->post('/hello/{id}', function (Request $request, Response $response, $args) { 
    echo "hello"; 
    $names = $request->getParsedBody(); 
    $db=dbConnect(); 
    $names_arr=[]; 
    $names_arr['name1']= filter_var($names['name1'], FILTER_SANITIZE_STRING); 
    $names_arr['name2']= filter_var($names['name2'], FILTER_SANITIZE_STRING); 
    $response->getBody()->write("Hello , ".$names_arr['name1']); 
    $query=mysqli_prepare($db, "INSERT into info(fname, lname) VALUES(?, ?)"); 
    mysqli_stmt_bind_param($query, "ss", $names_arr['name1'], $names_arr['name2']); 
    $result=mysqli_stmt_execute($query); 
    $rows=mysqli_stmt_insert_id($query); 
    echo "Rows: ".$rows; 
    return $response; 
}); 
$app->run(); 
?> 

私がインターネットで検索したところ、Laravelフレームワークによって引き起こされた同じエラーは解決されましたが、Slimについては解決されませんでした。私ができることはありますか?

+0

メッセージ「不明なデータベース」では何が不明ですか? –

+0

データベースを変更しましたが、同じエラーがありました。データベースが存在します。 –

+0

dbnameの後のスペースを削除してください。 'dbname = $ dbname' – Iskar

答えて

1

あなたはエラー出力があまりにも、空白を表示している

$pdo= new PDO("mysql:host=$host; dbname=$dbname", $user, $pass); 

空白を削除する必要があります。それは間違いであるはずです。

また、PDOとmysqliを混在させないでください。あなたはmqsqli関数にPDO-Connectionを渡しています。なぜなら、「期待されるmysqli、PDOを手に入れた」ということです。

私はmysqliに固執し、mysqli_connect()を介して接続を設定します。

+0

さて、私の挿入クエリが機能していません。 PhpStormは準備済みのサテライトでこのエラーを示しています。期待されるmysqliはPDOを持っています。何か案が? –

+0

PHPのmysqli関数を使用してデータベースに接続したい場合 – Pingbeat

+0

mysqli_prepare()を使用することはできませんか? –

関連する問題