-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接続が成功しました!!!」という出力しか表示されませんが、クラス「contacts」内でselect()が実行されていないようです。私はPHPを使ったコーディングのより良い方法を学びたいと思っているので、もっと良い方法があれば、それを学びたいと思います!

どなたでもお役に立てれば幸いです。

4

1 に答える 1

0

コードには2つの大きな問題があります

  1. PDOの代わりにmysqliを使用しているため、目標を達成するのが10倍困難になっています
  2. あなたは一度にすべてをやろうとしています。それは行く方法ではありません。APIに慣れ、プレーンテキストコードを使用していくつかのクエリを実行してみてください。次に、これらのコードを関数に結合します。そして、その時だけクラスを始めます。
于 2013-03-26T20:30:49.387 に答える