几天来,我一直在努力完成这项工作。我想发展我对 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 连接成功!!!”,但它似乎没有在“联系人”类中运行 select()。我正在寻找更好的 PHP 编码方法,所以如果有更好的方法,我很想学习它!
我将非常感谢任何人可以提供的任何帮助。