我在PHP OOP中編寫代碼,我試圖發送$ _POST數據 由一個Class函數過濾到另一個Class函數,將數據添加到數據庫 。具體登錄和密碼登記 表格。PHP如何發送數組變量到類函數
我有3類,將做到這一點:
- 是處理與數據庫的連接(我認爲這是沒有必要把這裏的代碼)
簡單類是過濾來的類$ _ POST-S:
class Filter extends Dbconnect { protected $login; protected $haslo; public function regFilter() { if (isset($_POST)) { foreach($_POST as $key => $val) { $filterVal = strip_tags($val); $filterVal = htmlspecialchars($filterVal); $filterVal = stripslashes($filterVal); $filterVal = str_replace("\\", "", $filterVal); $filter = array( $key => $filterVal ); foreach($filter as $key => $val) { echo "[$$key]"; echo "$val"; $ { $key } = $val; } } return $filter = array( 'login' => $login, 'haslo' => $haslo ); } else { echo "Proszę podać login i hasło!"; } } }
類,將得到用戶名和密碼,並將其發送給DB:
class Dbinsert extends regFilter{ //protected $login; //protected $haslo; protected $query; protected $dbo; public function insert(){ //$this->extract = extract($filter); //$this->login = $login; //$this->haslo = $haslo; $this->connect(); $this->query = "INSERT INTO uzytkownik (id, nazwa, haslo) VALUES ('', :login, OLD_PASSWORD(:haslo))"; if(!$result = $this->connect()->prepare($this->query)){ echo 'Zapytanie nie powiodło się'; } else{ $result->bindParam(':login', $login); $result->bindParam(':haslo', $haslo); $login = $_POST['login']; $haslo = $_POST['haslo']; $result->execute(); } $dbo = null; } }
現在,當我試圖從形式對象發送數據:
$rejestruj = new Dbinsert();
$filtruj = $rejestruj->regFilter();
var_dump($filtruj);
$dodaj = $filtruj->insert();
我得到以下結果:
[$login]login
[$haslo]password123
array(2) { ["login"]= string(5) "login" ["haslo"]= string(11) "password123" }
Fatal error: Call to a member function insert() on array in `E:\Xampp\htdocs\php\bazy_danych\obiektowe\my\register.php` on line 78
這並不讓我驚訝,因爲:登錄和haslo是從 「foreach」循環中類Filter(它只是爲了測試)「數組(2)」 從「var_dump($ filtruj);」(以檢查它是否實際上是 工作)和錯誤返回,因爲我發送一個數組到類 Dbinsert - 但在函數中,我把「提取」獲取變量。
我該如何發送這個濾波後的數組中的變量到類 Dbinsert?
編輯:作爲@Twinfriends建議我更正了類Dbinsert中的函數插入以實際使用預準備語句,這就是爲什麼(現在)登錄和haslo變量正在接受$ _POST。現在我需要回答我的問題。
(第一次發帖,感謝編輯的建議,也可以是任何建議表示讚賞,因爲我在PHP相當初學者 )
請重新格式化您的代碼,以便可以閱讀它 –
您的查詢沒有任何意義。 YOu嘗試將變量綁定到沒有任何佔位符的查詢。 – Twinfriends
@Twinfriends你可能是對的,因爲我的工作方法是編寫程序,然後將其轉換爲OOP。但查詢無需過濾功能。 – korni