mysql内にあるデータベースのテーブルを連携させたphpプログラムを作成しました.
ブラウザ上でこのプログラムを起動させると,複数の入力欄が表示されて,入力した情報 (あらかじめテーブルに登録しているカラムの情報)の組み合わせによって, 出力結果
(これもあらかじめテーブルに登録している情報)が変わるようにするプログラムを作ってみました.
知恵袋を使って,ある程度はコードの改良が進んだのですがphpのバージョンが古いのかエラーが
発生しています.
エラー内容
syntax error, unexpected T_CATCH
#ソースコード
<?php
$db_ipaddress ='IPアドレス名';
$db_id ='ユーザー名';
$db_pass ='パスワード';
$baba = filter_input(INPUT_POST, 'baba');
$kyori1 = filter_input(INPUT_POST, 'kyori1');
$kyori2 = filter_input(INPUT_POST, 'kyori2');
$kyaku1 = filter_input(INPUT_POST, 'kyaku1');
$kyaku2 = filter_input(INPUT_POST, 'kyaku2');
$ikusei = filter_input(INPUT_POST, 'ikusei');
$message = array();
$link = mysqli_connect($db_ipaddress, $db_id, $db_pass);
if ( ! $link ) {
die('接続失敗'.mysql_error() );
}
else {
print "mysql 接続完了<br>";
}
$usedatabase ='db名';
$db_selected = mysqli_select_db($link,$usedatabase);
if ( ! $db_selected ) {
die('データベース選択失敗'.mysql_error() );
}
else {
print "データベース選択完了<br>";
}
mysqli_set_charset($link,'utf-8');
$sql = 'select * from uma_musume';
$result = mysqli_query($link,$sql);
if ( ! $result ) {
die('selectクエリーが失敗'.mysql_error() );
}
else {
print "sql文が無事に稼働<br>";
print"データ取得完了<br>";
}
try {
$dbh = new PDO('mysql:db_host=ホスト名;usedatabase=db名', $db_id, $db_pass);
$sth = $dbh->query('select * from テーブル名 where baba=? and kyori1=? and kyori2=? and kyaku1=? and kyaku2=? and ikusei=?');
$sth->execute(array($baba, $kyori1, $kyori2, $kyaku1, $kyaku2, $ikusei));
foreach ($stmt as $row) {
$message = htmlspecialchars($row['ウマ娘名'], ENT_QUOTES);
print_r($row);
}
echo "</pre>";
$sth = null;
$dbh = null;
}
catch (PDOException $e) { //ここからエラー
$message = '<p>DATABASE ERROR</p>';
$message = $e->getMessage();
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
</head>
検索フォーム<br>
<body>
<form action ="data_final-1.5.php" method="post">
バ場適性 <input type="text" name="baba" value="<?= $baba ?>"><br>
距離適性_01 <input type="text" name="kyori1" value="<?= $kyori1 ?>"> 距離適\
性_02 <input type="text" name="kyori2" value="<?= $kyori2 ?>"><br>
脚質_01 <input type="text" name="kyaku1" value="<?= $kyaku1 ?>"> 脚質_02 <i\
nput type="text" name="kyaku2" value="<?= $kyaku2 ?>"><br>
育成難易度 <input type="text" name="ikusei" value="<?= $ikusei ?>"><br>
<button>検索</button>
</form>
<?= count($message) > 0 ? 'あなたが選んだのは ' . implode(', ', $message) . '\
です' : '該当する名前が見つかりません' ?>
</body>
</html>
#補足
このコードは私自身が作ったのではなく,知恵袋の方の回答で学んだことを活かして
元々作ったコードと合わせて改良したものです.
そしてエラーが出たコードは
catch (PDOException $e) {
からです.