私はこの仕事を数日間試みています。PHPとデータベースのセキュリティに関する知識を深めたいと考えており、OOPHPとパラメーター化されたクエリの使用を検討しています。データベースに接続し、選択を実行して結果を表示することから始めようと思いました。パラメータ化されたクエリはそれ自体で機能することは知っていますが、クラス内に配置して呼び出すと、結果を取得して表示することはできません。これが私が取り組んできた私のコードです:
<?php
class connect
{
public static function run()
{
$mysqli = new mysqli("*****", "*****", "*****");
$db = "sales";
mysqli_select_db($db);
if(!$mysqli)
{
printf("Connection Failed: %s\n", mysqli_connect_error());
}
else
{
echo("MariaDB Connection Successfull!!!");
}
}
}
//call_user_func(array($className, 'run'));
class contacts
{
public function select()
{
if($stmt = $mysqli->prepare("SELECT CON_ID, CON_FNAME, CON_LNAME, CON_EMAIL FROM contacts"))
{
$stmt->execute();
$stmt->bind_result($id,$fname,$lname,$email);
echo("<table align='center' width='40%'");
echo("<tr>");
echo("<td align='center' width='25%'>Contact ID</td>");
echo("<td align='center' width='25%'>First Name</td>");
echo("<td align='center' width='25%'>Last Name</td>");
echo("<td align='center' width='25%'>Email Address</td>");
echo("</tr>");
while($stmt->fetch())
{
echo("<tr>");
echo("<td align='center' width='25%'>");
printf("%s",$this->$id);
echo("</td>");
echo("<td align='center' width='25%'>");
printf("%s",$this->$fname);
echo("</td>");
echo("<td align='center' width='25%'>");
printf("%s",$this->$lname);
echo("</td>");
echo("<td align='center' width='25%'>");
printf("%s",$this->$email);
echo("</td>");
echo("</tr>");
}
printf("</table>");
$stmt->close();
}
else
{
printf("Prepared Statement Error: %s\n", $mysqli->error());
}
}
}
$connect = "connect";
$connect::run();
$contact = "contacts";
$contact::select();
?>
ページを実行すると、「MariaDB接続が成功しました!!!」という出力しか表示されませんが、クラス「contacts」内でselect()が実行されていないようです。私はPHPを使ったコーディングのより良い方法を学びたいと思っているので、もっと良い方法があれば、それを学びたいと思います!
どなたでもお役に立てれば幸いです。