ホームページ >php教程 >PHP开发 >一般的なデータベース操作クラスの最初の紹介 - フロントエンド easyui-datagrid、フォーム (php)

一般的なデータベース操作クラスの最初の紹介 - フロントエンド easyui-datagrid、フォーム (php)

高洛峰
高洛峰オリジナル
2016-12-27 13:43:511236ブラウズ

一般的なデータベース操作クラスの最初の紹介 - フロントエンド easyui-datagrid、フォーム (php)、実装コードは比較的単純です。具体的な実装手順については以下を参照してください。

実装された機能:

左側のデータグリッドには簡単な情報が表示され、右側には選択した行の詳細情報が表示されます

(1) 選択した行をクリックすると、詳細情報が表示されます。右側の[新規]、[変更]、[削除]ボタンが利用可能、[保存]ボタンが無効

(2) [追加]ボタンをクリック、[変更]、[削除]ボタンが無効、[ [保存] ボタンが有効になります

(3) [変更] ボタンをクリックし、[新規追加]、[削除] ボタンが無効になります

難点: 一般的なデータベース操作クラスの挿入メソッドと更新メソッド

最終的なレンダリング:

フロントエンドの機能はまだ完成度が低く、ボタン間のロジックに問題が残っています

その中で、Formain.phpはフロントエンドから渡された値を判断してactSQLを呼び出します。 class.php を使用して結果を取得します。コードは次のとおりです。

<?php
  require(&#39;include/mysql_connect/actSQL.class.php&#39;);
  $key=$_REQUEST[&#39;key&#39;];
  $a=new actSQL(&#39;localhost&#39;,&#39;root&#39;,&#39;1234&#39;,&#39;tpss&#39;);
  //获取信息
  if($key==&#39;1&#39;)
  {
   $a->getAllData(&#39;t_prekeychart&#39;);
  }
  if($key==&#39;2&#39;)
  { 
   $objectstr=$_REQUEST[&#39;object&#39;];   
   if($a->insertData($objectstr,&#39;t_prekeychart&#39;))
   {
    echo json_encode("true");
   }else{
    echo json_encode("false");
   }
   //test
   //$test=&#39;{"keychartid":"2","keyid":"2","keychartname":"2","level":"2","showtype":"2","helptips":"2","keylevel":"2","ishmap":"2"}&#39;;
   //$a->insertData($test,&#39;t_prekeychart&#39;);
  }
  if($key==&#39;3&#39;)
  { 
   $prekey=$_REQUEST[&#39;keychartid&#39;];
   $prekeyname=&#39;keychartname&#39;;
   if($a->delData($prekey,$prekeyname,&#39;t_prekeychart&#39;))
   {
    echo json_encode("true");
   }else{
    echo json_encode("false");
   }
  }
  if($key==&#39;4&#39;)
  {
   $objectstr=$_REQUEST[&#39;object&#39;];
   $prekeyname=&#39;keychartid&#39;;
   if($a->updData($objectstr,$prekeyname,&#39;t_prekeychart&#39;))
   {
    echo json_encode("true");
   }else{
    echo json_encode("false");
   }
  }
?>

Formain.php に表示されるクラスのさまざまなメソッドを見て、簡単に考えてみましょう。このメソッドは、単純な SQL ステートメントで実行でき、最後に

delData($prekey,$prekeyname,$tablename) で指定された情報を削除します。情報。これは簡単なので、詳しくは説明しません

insertData( $objectstr,$tablename )、$objectstr は json 形式の文字列、$tablename テーブル名です

難しいのは、それをつなぎ合わせることです。 insert into $tablename (... ...) value(....) この種のステートメント

解決策:

(1) $tablename に基づいてすべての列名を取得し、列名の配列を次のように変換します。最終的な SQL ステートメントを結合するための文字列 列名を取得することに加えて、別の目的があります。以下を参照してください

(2) json 形式の文字列 $objectstr を連想配列に変換し、json_decode() メソッドを呼び出します。

json_decode() メソッドを補足します

mixed json_decode (string $json [, bool $assoc = false [, int $ Depth = 512 [, int $options = 0 ]]] )

JSON 形式の文字列を受け入れて変換しますPHP 変数に入力します。ここで、 assoc は、パラメーターが TRUE の場合、連想配列が返されます。

(3) クエリされた列名の順序でデータをクエリし、データが空の場合、値を NULL に割り当て、結果を配列に格納することで、データベースが間違った値を挿入するのを防ぎます (これも理由の 1 つです)。列名の取得)

(4) (3) の結果が文字列に変換され、implode() メソッドが呼び出されます。

この関数は、配列の内容を文字列に結合します。 パラメータ グルー 単語間の区切り記号です

(5) SQL ステートメントの文字列を結合し、データベースに挿入します

updData($objstr,$ prekeyname,$tablename) この方法の難しさは、SQL ステートメントの文字列を結合することでもあり、結合形式は次のようになります

update $tablename set ..... where $prekeyname=$data[$prekeyname]

最初の2つのステップはinsertData()と同じです

(3) 列名の文字配列を走査して、非主キー名の列名の値を取得し、「」の文字列形式に従って配列に格納します。カラム名 = カラム名の値」。これがセットの最後にある不完全な文字列です


(4) (3)の結果を文字列に変換し、配列の要素を','で区切って、これが最後の文字列です「xx=xx,xx=xx」と設定した後の形式

(5) SQL文字列をつなぎ合わせて、データベースを更新します

insertData()とupdData()関数は次のとおりです

/*
   * 添加信息
   * @param:$objstr:json风格的数据库插入信息字符串
   *   $tablename:表名
   */
  function insertData($objstr,$tablename)
  {
    $dbc=$this->conData();
    if($dbc)
    { 
     $columnname=array();
     $columnname=$this->getColumns($tablename);
     //echo $columnname[0];
     $clos=implode(&#39;,&#39;,$columnname); //将列名数组转换为字符串
     //echo $clos;
     $data=json_decode($objstr,true); //将json格式的字符串转换为关联数组
     //echo $value[&#39;keychartname&#39;];
     $values=array();
     foreach($columnname as $value)
     {
       //按照查询到的列名查询数据,数据为空的,赋值为NULL,防止数据库插入数值错位
       //echo $data[$value]."<br>";
       if(isset($data[$value]))
       {
         array_push($values,$data[$value]);
       }else{
        $data[$value]=NULL;
        array_push($value,$data[$value]);
       }
     }
     $strvalue=implode(&#39;,&#39;,$values);
     //echo $strvalue;
     /*
     * SQL: insert into $tablename($clos) values(...)
     */
     $sql=<<<SQL
     insert into $tablename($clos) values($strvalue);
SQL;
     //echo $sql;
     $res=mysqli_query($dbc,$sql);
     if($res)
     {
      return true;
     }else{
       return false;
     }
    }else{
      echo "连接错误!";
    } 
  }
/*
   *更新信息 
   *@param: $objstr:json风格的数据库更新信息字符串
   *   $tablename:表名
   *   $prekeyname:主键名  
   * */
  function updData($objstr,$prekeyname,$tablename)
  {
    $dbc=$this->conData();
    if($dbc)
    {
     $columnname=array();
     $columnname=$this->getColumns($tablename); 
     //$clos=implode(&#39;,&#39;,$columnname); //将列名数组转换为字符串
     $data=json_decode($objstr,true); //将json格式的字符串转换为关联数组
     $sets=array();
     foreach($columnname as $value)
     { 
      //列名不等于主键名获取值
      if($prekeyname!=$value)
      {
        //set $value=$data[$value];
        array_push($sets,"$value=$data[$value]");//接好的set语句部分
      }
     }
     //$sets数组转化为字符串
     $stringsets=implode(&#39;,&#39;,$sets);
     //echo $stringsets;
     /*
     * SQL:update $tablename set ..... where $prekeyname=$data[$prekeyname]; 
     * */
     $sql=<<<SQL
      update $tablename set $stringsets where $prekeyname=$data[$prekeyname];
SQL;
     $res=mysqli_query($dbc,$sql);
     if($res)
     {
      return true;
     }else{
      return false;
     }
    }else{
      echo "连接错误";
    }
  }
/*
   *获取表的所有列名
   *@param:$tablename:表名
   */
  function getColumns($tablename)
  { 
   $dbc=@mysqli_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;1234&#39;,&#39;information_schema&#39;);
   if(!$dbc)
   {
    echo "Connect Error".mysqli_connect_error($dbc);
   }else
   {
    //连接成功,从表COLUMNS获取表的所有列名
    $sql="select COLUMN_NAME from columns where TABLE_NAME=&#39;$tablename&#39;";
    $res=@mysqli_query($dbc,$sql);
    $items=array();
    if($res)
    {
     while($row=mysqli_fetch_array($res,MYSQLI_ASSOC))
     {
      $columnname=$row[&#39;COLUMN_NAME&#39;];
      array_push($items,$columnname);
     }
    return $items;
    mysqli_close($dbc);
    }
    else{
     echo "查询失败,请检查SQL语句!";
     }
   }
  }

上記が全体の内容ですこの記事が皆さんに気に入っていただければ幸いです。

一般的なデータベース操作クラス - フロントエンド easyui-datagrid、フォーム (php) に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。