今日、私は会社の先輩から、MySQLデータベースでプリペアドステートメントを実行するために作成したPHPコードは「非効率的」であり、「サーバーに負担がかかりすぎる」と知らされました。それ以来、私は彼が何を意味するのかを理解し、それを修正しようとするという困難な立場にいることに気づきました。私はこの人と4日間連絡がないので、他の開発者に私のコードについてどう思うか、サーバーのパフォーマンスにボトルネックや問題を引き起こす可能性のある領域があるかどうかを尋ねています。
私のコードは機能し、クエリの結果を変数$ dataに返すので、技術的には機能します。それが効率的でうまく書かれているかどうかについては別の質問があります。その先輩が何を意味しているのか、何を言っているのかについて何かアドバイスはありますか?これが私がデータベースに接続してクエリを実行するために使用する方法です。
(メソッドという言葉を使用する場合、クラス内のメソッドを意味するのではないことに注意してください。つまり、データベースに接続してクエリを実行するときにコードを記述/構造化する方法です。)
<?php
// Create database object and connect to database
$mysqli=new mysqli();
$mysqli->real_connect($hostname, $username, $password, $database);
// Create statement object
$stmt=$mysqli->stmt_init();
// Prepare the query and bind params
$stmt->prepare('SELECT `col` FROM `table` WHERE `col` > ?');
$stmt->bind_param('i', $var1);
// Execute the query
$stmt->execute();
// Store result
$stmt->store_result();
// Prepare for fetching result
$rslt=array();
$stmt->bind_result($rslt['col']);
// Fetch result and save to array
$data=array();
while($stmt->fetch()){
foreach($rslt as $key=>$value){
$row[$key]=$value;
}
$data[]=$row;
}
// Free result
$stmt->free_result();
// Close connections
$stmt->close();
$mysqli->close();
?>
どんなアドバイスや提案も役に立ちます。推測しているだけでも、貢献して助けてください。前もって感謝します :)