【追記】
回答者様のアドバイスの元試行錯誤した結果、恥ずかしいことにただのsql文の間違いだったようです。これに2時間以上ついやしてたので本当恥ずかしいです。ただ、http_build_queryは言われなければ気づかなかったので感謝しています。
どうしてもわからなかったのでどこが間違っているのかを教えていただきたいです。開発環境はローカルでXAMPPを使ってます。
laravel5.1で入力フォームを作り、そこから入力されたデータをコントローラーで以下のように処理してみました。
public function test(Request $request) { $data =array('id'=>$request->id,'password'=>$request->password); $data = http_build_query($data, '', '&'); $url = 'http://localhost/apitest/apitest.php'; $header = ['Content-Type: application/x-www-form-urlencoded', 'Content-Length: '.strlen($data)]; $context = [ 'http' => [ 'method' => 'POST', 'header' => implode("\r\n", $header), 'content' => $data, 'ignore_errors' => true ] ]; $result = file_get_contents($url, false, stream_context_create($context)); $arr = json_decode($result,true); return view('testviews.view1')->with('arr',$arr); }
入力されたデータを別のphpファイルに送って返ってきた値をview側に渡すような感じで作りました。そしてphp側は
<?php $id=$_POST['login_id']; $password=$_POST['password']; $dsn='mysql:dbname=test;host=localhost'; $user='root'; $password=''; $dbh=new PDO($dsn,$user,$password); $dbh->query('SET NAMES utf8'); $sql='SELECT name FROM accessmngs WHERE login_id=? AND password=?'; $data[]=$id; $data[]=$password; $stmt=$dbh->prepare($sql); $stmt->execute($data); $dbh=null; $rec=$stmt->fetch(PDO::FETCH_ASSOC); $result = json_encode($rec['name']); ?>
こんな感じで作りました。正直、laravel側から送られたデータの受け取り方がこれでいいのかわからないのですが、あってると仮定します。
そしてview側はこのように作りました
<?php var_dump($arr); ?>
とりあえずデータが渡ってきてるかが気になるのでこうしてます。
そして実行して結果を見たのですが、ただNULLとしか書かれてませんでした。
欲しかった結果はデータベースに登録されてるnameのデータなのですが・・。一体どこが間違っているのでしょうか
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/15 07:43
退会済みユーザー
2016/09/15 07:48
退会済みユーザー
2016/09/15 08:29