За последние 24 часа нас посетили 60346 программистов и 1582 робота. Сейчас ищут 1193 программиста ...

DAO Двигаемся дальше.

Тема в разделе "PHP для новичков", создана пользователем askanim, 27 июн 2016.

  1. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    PHP:
    1.  public function drop ($nameTable) {
    2.         $db = Db::getConnection();
    3.         $result = $db->prepare('TRUNCATE TABLE :tablename');
    4.         $result->bindParam(':tablename', $nameTable);
    5.         $result->execute();
    6.     }

    Уже вопрос подымался раньше, и какую то часть я сделал через quote();

    Но захотел очищать таблица, и передовать туда значение вот так, но оно не хочет так работать как я написал, подозреваю, синтаксис написания не верен. Хотелось бы понять как данном случае сделать такой запрос правильно. Ведь можно сделать и так

    PHP:
    1.  public function drop ($nameTable) {
    2.         $db = Db::getConnection();
    3.  
    4.         $nameTable = $db->quote($nameTable);
    5.         $result = $db->query('TRUNCATE TABLE '.$nameTable);
    6.  
    7.     }
     
  2. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Нет таким путём тоже нельзя, ошибка при сравнении имени таблицы... Можно просто вот так.
    PHP:
    1. public function drop ($nameTable) {
    2.         $db = Db::getConnection();
    3.         $result = $db->query('TRUNCATE TABLE '.$nameTable);
    4.     }
     
  3. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Клик сюды, и смотри уроки, бесплатно и самое то, что надо для начала.
     
  4. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Ты сам с собой разговариваешь?
     
  5. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    :D я не в ту тему написал.... :D :D
    --- Добавлено ---
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Имя таблицы так не подставляется, и берётся в гревисы (`). Потом, ты же не будешь подставлять в имя таблицы значение, введённое пользователем? Поэтому оно не нуждается в дополнительном экранировании - ты сам себе sql-инъекции делать не будешь
    --- Добавлено ---
    А если вдруг и понадобится на кой-то чёрт, делается так:
    PHP:
    1. if (in_array($_GET["table_name"], $my_tables))
    2.  
    3. // Хотя чаще такое с orderby
    4. if (!in_array($orderby = $_GET["orderby"], ["asc", "desc"])) {
    5.     $orderby = "asc";
    6. }
     
    askanim нравится это.