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 ничего не возвращает, хотя все переменные есть, я это проверил.... Подскажите
 
Последнее редактирование:
Это делается вот так:
PHP:
$name = "[email protected]";

$sql = "SELECT COUNT(*) FROM users WHERE email = ?";
$stmt = $this->db->prepare($sql);
$stmt->execute([$name]);
return $stmt->fetchColumn();
 
Последнее редактирование:
Скорее всего это неправильно. Для чего они динамические?
Как вся эта динамика будет использоваться?
 
Скорее всего это неправильно. Для чего они динамические?
Как вся эта динамика будет использоваться?
Я пишу метод проверяющий какое-то значение на уникальность, метод получает $table - название таблицы, $name - название колонки, $val - проверяемое значение. Из полученных данных формирует запрос. Из моего сегодняшнего опыта плэйсхолдоры работают только после "WHERE ="
 
Я не спрашиваю, что ты пишешь.
Я спрашиваю, как это будет использоваться.
Как это будет выглядеть в коде?
В каких случаях будет применяться (кроме проверки емейла)?
 
Допусти при регистрации я хочу проверить существует ли уже данный email или nick, и должен быть метод который проверяет значение на уникальность в таблице users, желательно чтобы это был один метод,а не несколько методов, которые отдельно проверяют email и nick на уникальность,а один метод, вкоторые я буду передавать название таблицы, колонки и значение
 
Не надо этого делать. Тебе не нужен метод, чтобы использовать его ровно в одном месте.
Пусть у тебя будет один метод, который выполняет запрос. Любой запрос.
поверь мне, написать два раза SELECT 1 FROM table WHERE foo=? не настолько адски трудоемкая задача, как тебе воображается.
 
Не надо этого делать. Тебе не нужен метод, чтобы использовать его ровно в одном месте.
Пусть у тебя будет один метод, который выполняет запрос. Любой запрос.
поверь мне, написать два раза SELECT 1 FROM table WHERE foo=? не настолько адски трудоемкая задача, как тебе воображается.
Да, я уже разобрался и принял свое решение. Спасибо за помощь
 
Последнее редактирование:
там пример в комментах
Если ты про мой коммент, то и давал бы на него прямую ссылку :)
А то же ведь он там появился не просто так, а как раз из-за весьма популярной идеи применять эту функцию для идентификаторов.

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