前提・実現したいこと
laravelでポートフォリオを作っています。
ajaxでphpファイルにアクセスしようとするとコンソールに下記のエラーがでます。
一度質問させていただいたのですが別のエラーが発生し、原因がわかりません。
発生している問題・エラーメッセージ
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
該当のソースコード
index.php
jquery
1 $.ajax({ 2 url: 'good.php', 3 type: 'POST', 4 data:{ 5 post_id: postid, 6 user_id: userid 7 } 8 }).done(function(data){ 9 10 $(kore).next('span').html(data); 11 $(kore).toggleClass('clicked'); 12 13 }).fail(function(msg) { 14 console.log('fail'); 15 });
good.php
php
1<?php 2require('good_function.php'); 3if(isset($_POST['post_id'])){ 4 $p_id = $_POST['post_id']; 5 $u_id = $_POST['user_id']; 6 7 try{ 8 $dbh = new mysqli("localhost", "layman", "Bossmanbig(123)", "portfolio"); 9 $sql = 'SELECT * FROM goods WHERE post_id = :p_id AND user_id = :u_id'; 10 $data = array(':p_id' => $p_id, ':u_id' => $u_id); 11 $stmt = $dbh->prepare($sql); 12 $stmt->execute($data); 13 $resultCount = count($stmt->fetchAll()); 14 if(!empty($resultCount)){ 15 $sql = 'DELETE FROM goods WHERE post_id = :p_id AND user_id = :u_id'; 16 $data = array(':p_id' => $p_id, ':u_id' => $u_id); 17 $stmt = $dbh->prepare($sql); 18 $stmt->execute($data); 19 echo count(getGood($p_id)); 20 }else{ 21 $sql = 'INSERT INTO goods (post_id, user_id) VALUES (:p_id, :u_id)'; 22 $data = array(':p_id' => $p_id, ':u_id' => $u_id); 23 $stmt = $dbh->prepare($sql); 24 $stmt->execute($data); 25 echo count(getGood($p_id)); 26 } 27 }catch(Exception $e){ 28 error_log('エラー発生:'.$e->getMessage()); 29 } 30}
good_function.php
php
1<?php 2 3function getGood($p_id){ 4 5 try { 6 $dbh = new mysqli("localhost", "layman", "Bossmanbig(123)", "portfolio"); 7 $sql = 'SELECT * FROM goods WHERE post_id = :p_id'; 8 $data = array(':p_id' => $p_id); 9 $stmt = $dbh->prepare($sql); 10 if($stmt){ 11 $stmt->execute($data); 12 return $stmt->fetchAll(); 13 } 14 } catch (Exception $e) { 15 error_log('エラー発生:'.$e->getMessage()); 16 } 17}
試したこと
good.phpを
php
1echo 'A';
だけにしても同様でした。
good.php一つ目の
php
1 $stmt = $dbh->prepare($sql); 2 $stmt->execute($data); 3 $resultCount = count($stmt->fetchAll());
を
php
1 $stmt = $dbh->prepare($sql); 2 if($stmt == true){ 3 $stmt->execute($data); 4 $resultCount = count($stmt->fetchAll()); 5 }else{ 6 $resultCount = 0; 7 }
としても同様でした。
補足情報(FW/ツールのバージョンなど)
php version7
CentOS7
vagrant下
laravel
回答1件
あなたの回答
tips
プレビュー