php не может распознать объекты pdo другими методами

когда я хочу использовать $this->stmt->bindValue() в bindvalue php storm выдает ошибку:

bindvalue метода не найдено в PDO

и когда я запускаю коды, я вижу эту ошибку:

«PDOStatement :: execute (): SQLSTATE [HY093]: недопустимый номер параметра: параметр не был определен в C: \ xampp \ htdocs \ oop \ app \ Model \ DB.php в строке 54

<?php  namespace App\Model;


class DB
{

/**
* @var PDO   <--- need by PhpStorm to find Methods of PDO
*/

protected  $table ;
/**
* @var PDO   <--- need by PhpStorm to find Methods of PDO
*/
protected $stmt ;
protected $bind=[] ;
protected $fetchMode = \PDO::FETCH_OBJ ;

public function __construct()
{
$config= require_once (__DIR__.'/../config.php') ;


try{
$this->pdo = new \PDO("mysql:host=127.0.0.1;dbname={$config['db']['database']}",$config['db']['username']
,$config['db']['password']) ;

} catch (\Exception $e)
{
die($e->getMessage());
}

} // end of constructor

public  function select()
{

$stmt = $this->pdo->prepare("SELECT * FROM  {$this->table}") ;
$stmt->execute();
return  $stmt->fetchAll() ;

} // end of select method

public function create($data)
{
$field = join(',',array_keys($data)) ;
$param = ':'. join(', :' , array_keys($data)) ;

$this->stmt =  $this->pdo->prepare("INSERT INTO $this->table ($field) VALUES ($param)") ;
$this->bind = $data ;

$this->bindValue() ;

return $this->stmt->execute();

}

public function bindValue()
{

var_dump($this->stmt);
foreach ($this->bind as $key => $value){
$this->stmt->bindValue(":$key " , $value) ; //error
}

}


} // end of DB class

-1

Решение

bindvalue метода не найдено в PDO

Это правильно. PDO класс представляет соединение с базой данных, а не отдельный запрос / оператор. Для этого есть PDOStatement учебный класс.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector