前提・実現したいこと
お世話になります。
PHPの簡単なシステムを社内で運用しています。
phpMyAdminをバージョンアップしたことに伴い、PHPの方もバージョンを上げると、あるSQLの結果が返らなくなりました。
今までのバージョンPHP5.6
PHP7.1 →正常な値が返る
PHP7.2 →値が返らなくなった
PHP7.3 →値が返らなくなった
このことから7.1から7.2の変更点に原因があると考え調べてみましたが自分のレベルでは理解できませんでした。
※phpMyAdminからの要求は7.1で大丈夫なのですが、どうせなら7.3にしたいと考えております。
HTML
1<form action="" method="post"> 2 年月日<br> 3 <input type ="text" class="hidutext" name="tdate" value="<?php echo date('Y-m-d'); ?>"><br><br> 4 氏名<br> 5 <select name="a2" class="hidutext"> 6 <option value=""><? echo '全員を選択'; ?></option> 7 8<?php 9while($roo1 = $stt1->fetch()){//ここには記載していませんが事前にSQL文が存在します。 10 echo '<option value="'.htmlspecialchars($roo1['namae']).'">'.htmlspecialchars($roo1['namae']).'</option>'; 11 } 12?> 13 </select><br> 14 <input type ="submit" name="seach" value=" 検索 "> 15</form> 16 17<?php 18if(isset($_POST['seach'])){ 19 try{ 20 include '../tools/dbconnect.php';//db接続 21 $a2 = $_POST['a2']=="" ? '%' : $_POST['a2']; 22 $tdate = $_POST['tdate']; 23 $sql02 = "select max(id) as maxid from status_tbl where name like :a2 and s5 = :tdate group by s9"; 24 $str02 = $pdo->prepare($sql02); 25 $str02->bindvalue(':a2',$a2,PDO::PARAM_STR); 26 $str02->bindvalue(':tdate',$tdate,PDO::PARAM_INT); 27 $str02->execute(); 28 29 $zdata = $str02->fetchAll();//sqlの全結果を取得、配列に格納 30 31 if (!empty($zdata)) { ///データが存在する場合 32 $id = array_column($zdata, 'maxid');//カラムmaxidの値のみを配列に格納 33 $sql03 = "select id, name, datetime, s1, s5, s7, s9 from status_tbl where id IN(".implode(",",$id).")";//抽出条件 maxid 34 $str03 = $pdo->query($sql03); 35 36 while($row03 = $str03->fetch()){ 37 $sai = $row03['s7']=='最新' ? '【最新】': '【※次あり】'; 38 echo '<form action="data_input.php" method="post">'; 39 echo '<input type ="hidden" name ="maxid" value ="'.$row03['id'].'">'; 40 echo '<input type ="hidden" name="muid" value ="'.$row['s9'].'">'; 41 42 echo '<button type ="submit" name ="data_sentaku" value="">'.$sai.'<br>'.$row03['name'].'<br>'.$row03['s1'].'</button>'; 43 44 echo '</form>'; 45 } 46 47 }else{$a = $a2=='%'?'全員':$a2; echo '[氏名] '.$a.'<br>[日付] '.$tdate.'<h3>該当するデータは存在しません。</h3>';}///データが存在しない場合 48 49 }catch (PDOException $e){ 50 print('Error:'.$e->getMessage()); 51 die(); 52 $pdo = null;} 53 echo '<br><br>'; 54} 55?>
発生している問題・エラーメッセージ
このIF文の結果がPHP7.2以上だとFALSEになってしまいます。
PHP
1if (!empty($zdata)) { }
なので以下の式に問題があるのではと考えています。
どうか宜しくお願い致します。
$sql02 = "select max(id) as maxid from status_tbl where name like :a2 and s5 = :tdate group by s9"; $str02 = $pdo->prepare($sql02); $str02->bindvalue(':a2',$a2,PDO::PARAM_STR); $str02->bindvalue(':tdate',$tdate,PDO::PARAM_INT); $str02->execute();
補足情報(FW/ツールのバージョンなど)
お名前.COM 共有サーバ
php5.6.40(今まで)
phpMyAdmin5.0.1
回答1件
あなたの回答
tips
プレビュー