特定の電子メールIDに送信されるパイピング/読み込み電子メールであるPHPクラスをデータベーステーブルに挿入しています。このコードはとてもうまく動作します。しかし今、私は "1011"で始まるメールの本文にあるNumberのリストを抽出し、それをデータベースに照会するために使用したいと考えました。 body($ this-> body)は1011から始まる1つまたは10つの番号を持つことができます。次に、データベースからSELECTに "1011"を使用して、必要な情報を取得して別のテーブルに同じものを挿入します。しかし、これは動作していません。 SELECTクエリを削除すると、 "1011"を自分のテーブルに直接挿入することができます。しかし、まず "1011"を挿入する前に、このパラメーターを選択します。 PLSが私を助けます!抽出番号を使用して番号を抽出してDBを選択
$matches = array();
$pieces = explode(PHP_EOL, $this->body);
$matches = preg_grep("/1011/", $pieces);
//$results = implode(" | ",array_values($matches));
//echo "Terminal IDs: ".$results." ";
foreach ($matches as $columns)
{
$select = $this->pdo->query("SELECT * FROM tbl_atm_data1 WHERE terminal_id = '$columns' ");
$select = $select->fetchAll();
if(count($select) > 0) {
foreach($select AS $row) {
$this->sol_id =$row['sol_id'];
$this->timers =$row['timers'];
$this->atm_name=$row['atm_name'];
$this->terminal_id =$row['terminal_id'];
$insertFile = $this->pdo->prepare("INSERT INTO tbl_request_dump1(terminal_id,sol_id,timers,atm_name) VALUES (:terminal_id,:sol_id,:timers,:atm_name)");
$insertFile ->bindParam(':terminal_id', $columns);
$insertFile ->bindParam(':sol_id', $this->sol_id);
$insertFile ->bindParam(':timers', $this->timers);
$insertFile ->bindParam(':atm_name', $this->atm_name);
$insertFile->execute();
}
}else {
echo "No Terminal ID to Need to Save";
die();
}
}
これは、より簡単で高速です。「INSERT INTO dump1(...)SELECT ... FROM data1 WHERE ...」です。 1つだけ '実行する'は、フェッチなど、 –