Пытаюсь в цикле занести данные в бд. То есть я отправляю запрос в цикле.Но у меня почему-то добавляется лишь одна строка.
for($i = 0; $i < count($arr); $i++) {
if ($arr[$i]['sex'] == 1) {
$DBObj->query("INSERT INTO `users_vk` SET id_users = ?, first_name = ?, last_name = ?, sex = ?, bdate = ?, city_id = ?, city_name = ?, country_id = ?, country_name = ?, online = ?, home_phone = ?, status = ?, last_seen = ?, platform = ?, domain = ?, email = ?, photo_id = ?, langs = ?, relations = ?", [$arr[$i]['id'], $arr[$i]['first_name'], $arr[$i]['last_name'], $arr[$i]['sex'], $arr[$i]['bdate'], $arr[$i]['city']['id'], $arr[$i]['city']['title'], $arr[$i]['country']['id'], $arr[$i]['country']['title'], $arr[$i]['online'], $arr[$i]['home_phone'], $arr[$i]['status'], $arr[$i]['last_seen']['time'], $arr[$i]['last_seen']['platform'], $arr[$i]['domain'], 'none', 'none', 'none', $arr[$i]['relation']], ['insert']);
}else continue;
}
Основной класс для работы с бд,упростил его и многие методы удалил,так как тут они мне не нужны,так как это одно страничный сайт
<?php
class DB
{
//База Данных - БД
private $host;
private $user;
private $password; //Пароль от БД
private $dbname; //Имя БД
private $sq;
private $pdo;
private $ex;
protected function __construct($host, $user, $password, $dbname, $sq)
{
$this->host = $host;
$this->user = $user;
$this->password = $password;
$this->dbname = $dbname;
$this->sq = $sq;
try {
$this->pdo = new PDO("mysql:host={$host};dbname={$dbname}", $user, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$this->pdo->exec("SET NAMES utf8");
}catch (PDOException $e) {
echo "невозможно установить соединение с базой данных <br />";
}
}
public function getSQ()
{
return $this->sq;
}
private function preparePDO(string $query) //Подготовка запроса
{
$this->ex = $this->pdo->prepare($query);
// echo "\nPDO::errorInfo():\n";
// print_r($this->pdo->errorInfo());
}
private function executePDO(array $array, string $string, array $action) //Замена вопрос на данные
{
switch ($action[0]) {
case 'select':
if($this->StringKeys($array)) {
$this->ex->execute($array);
if ($string == 1) {
$result = $this->ex->fetchAll(PDO::FETCH_ASSOC);
}
// print($this->ex->debugDumpParams());
}else{
if(count($array) == 0) {
$this->ex->execute();
$result = $this->ex->fetchAll(PDO::FETCH_ASSOC);
}
}
return $result;
break;
case 'insert':
$this->ex->execute($array);
// print($this->ex->debugDumpParams());
break;
default:
# code...
break;
}
}
protected function customQuery(string $query, array $data = [], array $action = []) //Юзерский запрос,тут он может написать любой запрос
{
if(!is_array($data)) return false;
$this->preparePDO($query);
return($this->executePDO($data, 1, $action));
}
private function stringWhere($array)
{
$field = "`".implode('`, `', $array)."`";
return $field;
}
private function StringKeys(array $array) //Проверяет,массив ассоциативный или обычный
{
$arr = array_keys($array);
if (is_numeric($arr[0])) return true;
else return false;
}
protected function __destruct()
{
if($this->pdo) $this->pdo = null;
}
} ?>
еще один класс
<?php
class DBObj extends DB
{
public function __construct($host, $user, $password, $dbname, $sq = '?')
{
parent::__construct($host, $user, $password, $dbname, $sq);
}
public function query(string $query, array $data = [], array $action = [])
{
$rezult = $this->customQuery($query, $data, $action);
return $rezult;
}
public function __destruct()
{
parent::__destruct();
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости