class DBAcess{
private $_mysql_connection;
function db_access(){
$this->_mysql_connection = mysqli_connect('localhost', 'root', 'aaaaa', 'test') or die('cant connect to the db server');
}
function display_user($user_id){
$sql = "SELECT * FROM email WHERE id = '$user_id'";
$db_handle = mysqli_query($this->_mysql_connection, $sql) or die('cant query db');
$num_count = mysqli_num_rows($db_handle);
if($num_count != 1){
echo 'no record';
}else{
while($row = mysqli_fetch_array($db_handle)){
echo $row['email'];
}
}
}
}
$db_operation = new DBAcess();
$db_operation->db_access();
$db_operation->display_user(1);
答えて
これが良い習慣であるかどうかを尋ねているなら、それはうまくいくが、このコードには保守が難しい問題がある。 データベースクラスでは、接続の処理、クエリの実行、挿入IDの取得、およびそれらのクエリの結果の書式設定などのヘルパメソッドのみを処理する必要があります。 ユーザークラスはデータベースクラスを呼び出してクエリを実行し、ユーザー情報を取得する必要があります。 また、データベース資格情報を設定ファイルに移動することを検討することもできます。それらを定数として宣言すると、_DB_SERVER_、_DB_USER_などを使用できます。
あなたのコードをメンテナンス可能にする方法を学ぶためのリンクリソースはありませんか? –
普及しているオープンソースのPHPプロジェクトは、コードを研究して、そのようなコードを書く方法と理由を理解しようとします。実際の問題を解決する実際のプロジェクトから来るので、チュートリアルよりもはるかに多くを提供します。 – Eihwaz
個人的には、データベースのテーブルの後にクラスをモデル化し、別のデータベースクラスを使用して重い作業を行います。 DBクラスがオンデマンドクエリのみを実行している場合は静的に処理し、ハンドルが保存されているかどうかを気にしないで、複数のクエリを実行するためにDBクラスをインスタンス化することもあります。以下の例では、静的にDBを呼び出してコードを保存する方法を使用していますが、アプリケーションに適合していると確信しています。
また、PDOライブラリを使用してデータベースを処理することを強くお勧めします。ほとんどの場合、すべてのドライバで同じコードを使用することができますが、動作の例外はいくつか存在します。また、表示されているように照会を準備すると、データベースまたはWebからの入力に注意する必要がなくなります。したがって、SQLインジェクションは問題ではありません。
私はこれを実行しようとしていないが、大きな画像があり、少なくとも
<?php
class User {
// Don't know your fields, these are examples
private $first_name;
private $last_name;
private $email;
private $id;
public function __construct($user_id = NULL){
if(!empty($user_id)){
$this->loadFromDB($user_id);
}
}
public function loadFromDB($id){
$sql = 'SELECT * FROM email WHERE id = :id';
$result = Database::query($sql,[':id'=>$id]);
if(sizeof($result) !== 1){
throw new Exception("Failed to load user or user not found");
}
$this->first_name = $result[0]["first_name"];
$this->last_name = $result[0]["lastname"];
$this->email = $result[0]["email"];
$this->id = $id;
}
public function display(){
echo $this->email;
}
}
class Database {
public static function query($sql, $params){
try{
$db = new PDO('mysql:dbname=test;host=127.0.0.1;charset=UTF8','root','aaaa');
}
catch(PDOException $e){
echo 'Connection failed: ' . $e->getMessage();
}
$stmt = $db->prepare($sql);
$stmt->execute($params);
$result = $stmt->fetchAll();
return $result;
}
}
$user = new User(1);
$user->display();
- 1. OOPで親クラスにアクセスする正しい方法
- 2. これはoop PHPで準備された挿入文を使用する正しい方法ですか?
- 3. OOPでS式を解析する正しい方法
- 4. これはkafkastreamをブロックする正しい方法ですか?
- 5. これはファイルをgitignoreする正しい方法ですか?
- 6. OOPでデータベースクラスにアクセスするには?
- 7. 正しい方法で超大域にアクセスするには?
- 8. Promise.promisifyで正しい "これ"を確実にする方法は?
- 9. これは、MySQLとUTF8でUTF8エンコーディングでデータを取得する正しい方法ですか?
- 10. これは、ポインタを介して列にアクセスする正しい方法ですか?
- 11. AngularJS - これは正しい方法は何ですか?
- 12. これはPHPを使用してmysqlテーブルに挿入する正しい方法ですか?
- 13. これを記述するクリーナー/ OOPの方法は何ですか?
- 14. mysqlのエラーメッセージを解析する - それは正しい方法ですか?
- 15. これはmysqlクエリの正しい構文ですか?
- 16. これはphpと$ _POST変数で2つのmysqlテーブルを照会する正しい方法ですか?
- 17. .htaccess RewriteRule:これは正しい方法ですか?
- 18. VMのCompute Engine/gcloud - これは正しい方法ですか?
- 19. スレッドCond。これは正しいC++の方法ですか?
- 20. これは正しい運動方法ですか?
- 21. これは正しいキャスト方法ですか?
- 22. これはPHP OOPにとって最適な方法ですか?
- 23. Emberのコントローラーからモデルにアクセスする正しい方法は何ですか
- 24. OOPとMVCプリンシパル(PHP)によると正しいですか?
- 25. PHP OOP - 子クラス内から親プロパティにアクセスする方法
- 26. PHPでOOPプログラミングでクラスを設定する正しい方法は何ですか?
- 27. は、これがEntity Frameworkとやりとりする正しい方法ですか?
- 28. これはiPadアプリをフルスクリーンにする正しい方法ですか?
- 29. これはlaravelにツールチップを追加する正しい方法ですか?
- 30. Python OOP:フラグパラメータを使ってメソッドにアクセスする方法は?
私はあなたの実際の質問への答えは、あなたが既に例えばhttpsを行い、オープンソース・モジュール使用すること – RiggsFolly
NOだと思うですが//github.com/joshcam/PHP-MySQLi-Database-Class – FastTurtle