KatsumiTanaka2016/07/24 14:37「ここに処理が入る」という質問の意味がよくわかりませんが、foreachは配列の先頭から最後までデータを一つずつ取り出しながら、ループすることができます。 提示されたソースでは、全体をforeach文で囲い、今$results[$cnt]でアクセスしている部分を$resultに修正すれば、 $results=CommonComponent::CheckExplainParce($u_userid,$u_id); で、取得した配列をループで処理できると思います
amaguri2016/07/25 00:47なるほど 現在のコードを foreach文で囲い 今$results[$cnt]でアクセスしている部分を$resultに修正すれば、いいんですね! あいがとうございます
amaguri2016/07/25 01:52 編集$results=CommonComponent::CheckExplainParce($u_userid,$u_id); foreach ($results as $result) { //$u_type=$result->type;で$resultからデータを取得。 $u_type=$result->type; //$u_typeに"insert|create table|create database|drop database|drop table"が含まれるかの確認をする。 if( eregi($u_type,"insert|create table|create database|drop database|drop table")){ //対象のDBを$result->dbを$resultsから抽出 $u_db=$result->db; //対象のDBが個人情報DBか識別 $dbcheck = $this->PrivateHiveDb->find('count', [ 'conditions' => ['PrivateHiveDb.hive_database' => $u_db] ]); //対象のDBが個人情報系の場合 if($dbcheck){ // 接続元IP情報 $ips=CommonComponent::IpCheck(); if (empty($ips)) { $this->set("result" , array("result" => "error")); return; } }else{ /参照系の場合 //対象のDBを$result->dbを$resultから抽出 $u_db=$result->db; //対象のDBが個人情報DBか識別 $dbcheck = $this->PrivateHiveDb->find('count', [ 'conditions' => ['PrivateHiveDb.hive_database' => $u_db] ]); //対象のDBが更新系の場合 if($dbcheck){ // 接続元IP情報 $ips=CommonComponent::IpCheck(); if (empty($ips)) { $this->set("result" , array("result" => "error")); return; } } } }
amaguri2016/07/27 01:12今回やりたかったこととしては $resultsに入っているEXPLAINを解析したデータを一つずつ持ってきて そこから実行されたクエリが更新系なのか参照系なのかを確認した上で 更新系の場合は 更新先のDB名を持ってきてそのDB名はがDBに登録されているDBかどうかを見てそれに合わせてIPをチェックするという動きを書きたかったです
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/24 12:24
2016/07/24 14:37
2016/07/25 00:47
2016/07/25 01:52 編集
2016/07/25 01:01
2016/07/25 12:26
2016/07/27 01:12