0

mysqlデータベースのレコードを表示するコードをphpで作成しました。今、私は自分のWebページを介してdataabseの行を編集および削除したいと思っています。phpでどのように可能ですか?データベーステーブルにidフィールドが含まれていません

<?php

mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("newlog1") or die(mysql_error());
$key=mysql_query("select id from newregister1") or die(mysql_error());
$result=mysql_query("select * from newregister1 where id='$key'") or die(mysql_error());

echo "<table border='1'>";
echo "<tr><th>NAME</th><th>EMAILID</th><th>ADDRESS</th><th>CONTACT</th><th>STATE</th><th>CITY</th><th>EDIT</th></tr>";

while($row=mysql_fetch_array($result)) {
  echo "<tr><td>";
  echo $row['name'];
  echo "</td><td>";
  echo $row['emailid'];
  echo "</td><td>";
  echo $row['address'];
  echo "</td><td>";
  echo $row['contact'];
  echo "</td><td>";
  echo $row['state'];
  echo "</td><td>";
  echo $row['city'];
  echo "</td><td>";
  echo "Edit";
  echo "</td><td>";
  echo "Delete";
  echo "</td></tr>"
} 
echo "</table>";

?> 
4

2 に答える 2

1

まず、古い mysql_* 関数を使用するべきではありませんが、SQL インジェクションが存在するため、それには触れません。

最も簡単な方法は、ページが行うと予想される各アクションのモデルを作成し、編集削除などを追加してから、どのメソッドが呼び出されるかを処理するコントローラーを用意することです。$_GET['do']私の例では簡単にするために、パラメーターに基づくスイッチを使用していません。

次に、スイッチのどの部分が実行されているかに応じて、モデル内のさまざまなメソッドが呼び出されます。

<?php
//Open a connection to the db
try {
    $db = new PDO("mysql:host=localhost;dbname=newlog1", 'root', 'yourPW');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}catch (Exception $e){
    die('Cannot connect to mySQL server.');
}

/**
 * The contacts model
 */
class contacts_object{

    //Pass the db connection to this class
    function __construct(PDO $db){
        $this->db = $db;
    }

    function fetch_all(){
        $sql = 'SELECT * FROM newregister1';
        $statement = $this->db->prepare($sql);
        $statement->execute();
        return $statement->fetchAll(PDO::FETCH_ASSOC);
    }
    function fetch_by_id($id){
        $sql = 'SELECT * FROM newregister1 WHERE id=:id';
        $statement = $this->db->prepare($sql);
        $statement->bindParam(':id', $this->user, PDO::PARAM_INT);
        $statement->execute();
        return $statement->fetch(PDO::FETCH_ASSOC);
    }

    function add($data){
        $sql = 'INSERT into newregister1 (name, emailid, address, contact, state, city)
                                  VALUES (:name, :emailid, :address, :contact, :state, :city)';
        $statement = $this->db->prepare($sql);
        $statement->bindParam(':name',    $data['name'], PDO::PARAM_STR);
        $statement->bindParam(':emailid', $data['emailid'], PDO::PARAM_STR);
        $statement->bindParam(':address', $data['address'], PDO::PARAM_STR);
        $statement->bindParam(':contact', $data['contact'], PDO::PARAM_STR);
        $statement->bindParam(':state',   $data['state'], PDO::PARAM_STR);
        $statement->bindParam(':city',    $data['city'], PDO::PARAM_STR);
        $statement->execute();
    }
    function update($data, $id){
        $sql = 'UPDATE newregister1 SET name=:name, emailid=:emailid, address=:address, contact=:contact, state=:state, city=:city
                WHERE id=:id';
        $statement = $this->db->prepare($sql);
        $statement->bindParam(':id',      $id, PDO::PARAM_INT);
        $statement->bindParam(':name',    $data['name'], PDO::PARAM_STR);
        $statement->bindParam(':emailid', $data['emailid'], PDO::PARAM_STR);
        $statement->bindParam(':address', $data['address'], PDO::PARAM_STR);
        $statement->bindParam(':contact', $data['contact'], PDO::PARAM_STR);
        $statement->bindParam(':state',   $data['state'], PDO::PARAM_STR);
        $statement->bindParam(':city',    $data['city'], PDO::PARAM_STR);
        $statement->execute();
    }

    function delete($id){
        $sql = 'DELETE FROM newregister1 WHERE id=:id';
        $statement = $this->db->prepare($sql);
        $statement->bindParam(':id', $this->user, PDO::PARAM_INT);
        $statement->execute();
    }
}


//Example usage
$contact = new contacts_object($db);

//URL: http://example.com/admin/?do=add
$do = null;
if(isset($_GET['do'])){
    $do = $_GET['do'];
}

switch($do){
    case "add":
        if($_SERVER['REQUEST_METHOD']=='POST'){
            //Do some validation
            if(name, emailid, address, contact, state, city are set){
                $data = array('name'=>$_POST['name'],
                              'emailid'=>$_POST['emailid'],
                              'address'=>$_POST['address'],
                              'contact'=>$_POST['contact'],
                              'state'=>$_POST['state'],
                              'city'=>$_POST['name']);
                $contact->add($data);
            }           
        }

        //Echo your add form ect
        break;
    case "edit":
        //EG:http://example.com/admin/?do=edit&id=13
        if(!empty($_GET['id']) && is_numeric($_GET['id'])){
            $result = $contact->fetch_by_id($_GET['id']);
        }else{
            exit(header('Location: http://example.com/admin/'));
        }

        //Handle the update     
        if($_SERVER['REQUEST_METHOD']=='POST'){
            //Do some validation eg
            if(name, emailid, address, contact, state, city are set){
                $data = array('name'=>$_POST['name'],
                              'emailid'=>$_POST['emailid'],
                              'address'=>$_POST['address'],
                              'contact'=>$_POST['contact'],
                              'state'=>$_POST['state'],
                              'city'=>$_POST['name']);
                $contact->update($data, $_POST['id']);
            }           
        }

        //Echo your edit form ect and loop through the $result Array
        break;

    case "delete":
        //EG:http://example.com/admin/?do=delete&id=13
        if(!empty($_GET['id']) && is_numeric($_GET['id'])){
            $contact->delete($_GET['id']);
            exit(header('Location: http://example.com'));
        }
        break;

    default:
    //EG http://example.com/admin/
    $result = $contact->fetch_all();
    //Echo your front page act and loop through the $result Array for all contacts
    break;
}
?> 

完成したスクリプトではなく、単なる例です...

于 2012-07-13T07:57:32.957 に答える
0

SQL クエリ UPDATE でデータベースの行を更新: UPDATE users SET name = 'new_name' WHERE id = '5' MySQL update

別の SQL クエリで行を削除する - DELETE: DELETE FROM users WHERE id = '5' MySQL の削除

于 2012-07-13T07:04:46.920 に答える