Pdo, множественная запись в таблицу

Не понимаю. В классе

function __construct() {
    $this->db_id = new PDO('mysql:host=localhost;dbname=tb', 'us', '123'
                       [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'",
                        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION]);
            
    return $this->db_id;                                                        
}

Далее вызываем

$pdo = new pd;

Необходимо записать множество записей, в цикле, но с перва разобраться с этим

$all = $pdo->prepare("INSERT INTO `test` (`ss`) VALUES (?)", [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
$all->bindParam($tags);
$tags = 'sssss';
$all->execute();

https://www.php.net/manual/ru/pdo.prepared-statements.php

Как только не пробовал, не выходит. Не записывает...

Пробовал добавить отдельно 2 объекта в класс под это. Так не знаю как передать имея переменной, не значение, а именно имя...


Ответы (1 шт):

Автор решения: Rijen

Вы можете забиндить как неименованный:

  $stmt->$pdo->prepare("INSERT INTO `test` (`ss`) VALUES (?)");
    $tag = 'sss'
    $stmt->bindParam(1, $tag, PDO::PARAM_STR);
    $stmt->execute(); 

Так и именнованый параметр:

   $stmt->$pdo->prepare("INSERT INTO `test` (`ss`) VALUES (:zz)");
    $tag = 'sss'
    $stmt->bindParam(':zz', $tag, PDO::PARAM_STR);
    $stmt->execute();

В документации есть много пример использования.

Есть хороший, более полный ответ по разным видам биндов.

$stmt = $this->db_id->prepare(...);

foreach($any_data as $params){
   $stmt->execute($params);
}
→ Ссылка