Пытаюсь в цикле занести данные в бд. То есть я отправляю запрос в цикле.Но у меня почему-то добавляется лишь одна строка.
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();
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В БД есть болеее 5 000 000 записейИнформации в них не много - фильтрация идёт по одному полю, которое является индексом
В шаблоне есть код для меню, которое берется из БД
Подскажите пожалуйста, есть telegram botЕсть условие, если клиент написал "Привет" бот скидывает клиенту сообщения "Напишите ваше имя"
Установлен PHP 71, echo phpinfo() сообщает о подключенном драйвере SQLite