PDO prepare

Vorobyov1996

Новичок
Привет. Не давно начал изучать PDO
Код:
$name = "email";
$table  = "users";
$name = "[email protected]";

$sql = "SELECT COUNT(*) FROM ? WHERE ? = ? LIMIT 1";

$stmt = $this->db->prepare($sql);

$stmt->execute([$table, $name, $value]);

return $stmt->fetchColumn();
Почему то fetchColumn ничего не возвращает, хотя все переменные есть, я это проверил.... Подскажите
 
Последнее редактирование:

Фанат

oncle terrible
Команда форума
Это делается вот так:
PHP:
$name = "[email protected]";

$sql = "SELECT COUNT(*) FROM users WHERE email = ?";
$stmt = $this->db->prepare($sql);
$stmt->execute([$name]);
return $stmt->fetchColumn();
 
Последнее редактирование:

Фанат

oncle terrible
Команда форума
Скорее всего это неправильно. Для чего они динамические?
Как вся эта динамика будет использоваться?
 

Vorobyov1996

Новичок
Скорее всего это неправильно. Для чего они динамические?
Как вся эта динамика будет использоваться?
Я пишу метод проверяющий какое-то значение на уникальность, метод получает $table - название таблицы, $name - название колонки, $val - проверяемое значение. Из полученных данных формирует запрос. Из моего сегодняшнего опыта плэйсхолдоры работают только после "WHERE ="
 

Фанат

oncle terrible
Команда форума
Я не спрашиваю, что ты пишешь.
Я спрашиваю, как это будет использоваться.
Как это будет выглядеть в коде?
В каких случаях будет применяться (кроме проверки емейла)?
 

Vorobyov1996

Новичок
Допусти при регистрации я хочу проверить существует ли уже данный email или nick, и должен быть метод который проверяет значение на уникальность в таблице users, желательно чтобы это был один метод,а не несколько методов, которые отдельно проверяют email и nick на уникальность,а один метод, вкоторые я буду передавать название таблицы, колонки и значение
 

Фанат

oncle terrible
Команда форума
Не надо этого делать. Тебе не нужен метод, чтобы использовать его ровно в одном месте.
Пусть у тебя будет один метод, который выполняет запрос. Любой запрос.
поверь мне, написать два раза SELECT 1 FROM table WHERE foo=? не настолько адски трудоемкая задача, как тебе воображается.
 

Vorobyov1996

Новичок
Не надо этого делать. Тебе не нужен метод, чтобы использовать его ровно в одном месте.
Пусть у тебя будет один метод, который выполняет запрос. Любой запрос.
поверь мне, написать два раза SELECT 1 FROM table WHERE foo=? не настолько адски трудоемкая задача, как тебе воображается.
Да, я уже разобрался и принял свое решение. Спасибо за помощь
 
Последнее редактирование:

Фанат

oncle terrible
Команда форума
там пример в комментах
Если ты про мой коммент, то и давал бы на него прямую ссылку :)
А то же ведь он там появился не просто так, а как раз из-за весьма популярной идеи применять эту функцию для идентификаторов.

В любом случае, чуваку в данном случае динамические идентификаторы не нужны.
 
Сверху