私はPHPを初めて使い、OOP PHPを習得しようとしています。OOP PHPとPDOを使用してmysqlにデータを挿入
OOP PHPを学ぶための登録フォーム(単純なもの)を作成していますが、データを提出すると成功メッセージが表示されますが、データはデータベースに挿入されません。
以下は私のコードです:
connection.php
<?php
class DBConnection extends PDO
{
public function __construct()
{
$host='mysql:host=localhost;dbname=OOP';
$user='root';
$password='';
parent::__construct($host,$user,$password);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// always disable emulated prepared statement when using the MySQL driver
$this->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}
}
?>
のindex.php
<?php
session_start();
/*include 'classes.php';
//$dbHandle = new DBConnection();
$ins=new basic_operation();
$ins->Insert_Data();*/
?>
<div class="col-lg-12">
<div class="col-lg-1"></div>
<div class="col-lg-7">
<form action="user_data.php" method="post" >
<input type="text" name="username" id="username" class="form-control"><br>
<input type="email" name="email" id="email" class="form-control"><br>
<input type="password" name="password" class="form-control" id="password"><br>
<input type="submit" name="submit" id="submit" value="submit">
</form>
</div>
</div>
<div>
<?php if (isset($_SESSION['insert']))
{
echo $_SESSION['insert'];
unset($_SESSION['insert']);
}
?></div>
</div>
</div>
User_data.php
<?php
session_start();
include 'classes.php';
$insert=new basic_operation();
$usr=$insert->Insert_Data();
//return $insert;
$_SESSION['insert']='data inserted successfuly';
header('location:index.php');
?>
Classes.php
<?php
include 'connection.php';
class basic_operation
{
public function Insert_Data()
{
if (isset($_POST['submit'])) {
$user = $_POST['username'];
$email = $_POST['email'];
$pass = $_POST['password'];
$smt = new DBConnection();
$qry = $smt->prepare("insert into student(User_Name,Email,Password) VALUES ('" . $user . "','" . $email . "','" . $pass . "')");
$qry->execute();
}
}
}
?>
いずれかがその後のリンクを提供してくださいOOP PHPおよびPDOを使用してPHPの動作を(、削除、挿入、更新を選択)基本的なCRUDを実行する方法を知っている場合、ソース私はそれから学ぶことができます。
私はインターネットで検索しましたが、接続コードを見つけやすくなりました...説明的な答えを探していますが、この質問はまた、 OOP PHPを学びたい
ご協力いただきますようお願い申し上げます。
を試してみてくださいあなたが持っていた – RiggsFolly
'PDO :: ERRMODE_EXCEPTION'を使うようにPDOを設定する感覚ですが、' try/catch'ブロックを使ってスローされた例外をキャッチしていないので、表示されず、エラーも発生しません – RiggsFolly
あなた自身ですべてのコードを書いたことがありますか?いいえの場合は、最初からすべてを開始するか、コードの構造を理解する必要があります。上記のコードでは、入力はバインドされておらず、直接挿入されています(MySQLインジェクションのリスク)と 'InsertData()'関数は同じタイプのデータに固有です。あなたが望むなら、自分のスタイルでコードを書き直したいと思います。 – Rehmat