-1

几天来,我一直在努力完成这项工作。我想发展我对 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 编码方法,所以如果有更好的方法,我很想学习它!

我将非常感谢任何人可以提供的任何帮助。

4

1 回答 1

0

您的代码有两个主要问题

  1. 您正在使用 mysqli 而不是PDO,使您的目标难以实现十倍
  2. 你试图一次做所有事情。这不是要走的路。尝试让自己熟悉 API,只使用纯文本代码运行一些查询。然后将这些代码组合成函数。然后才开始上课。
于 2013-03-26T20:30:49.387 回答