За последние 24 часа нас посетили 17822 программиста и 1655 роботов. Сейчас ищут 1266 программистов ...

pdo update

Тема в разделе "MySQL", создана пользователем seifer, 6 авг 2017.

  1. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Код (Text):
    1.  
    2. $query = "UPDATE tabl SET";
    3. $id = $db->quote($id);
    4.  
    5. foreach ($arr as $k => $v) {
    6.     $query .= ' '.$k.' = 1,';
    7. }
    8. $query = substr($query, 0, -1).' WHERE id= '. $id; // получаем запрос в виде UPDATE tabl SET text1= 1, text2 = 1, text3 = 1 WHERE id = '4'
    9.  
    10. $s = $db->prepare($query);  
    11. $s->execute();
    Не хочет обновлять таблицу, где может быть косяк? $query в кавычки брать пробовал, не помогает. errorCode 00000 пишет..
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Запятая лишняя
    --- Добавлено ---
    А, нет, отсекается после цикла. Текст не в кавычках?
    После выполнения запроса можно у мусклула узнать правду про ошибку выполнения запроса.
     
  3. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Пробовал и с кавычками и без. Как узнать, голова чет не варит уже?
    --- Добавлено ---
    полный кусок, таблица создается, но не апдейтится
    Код (Text):
    1.  
    2. $db = new PDO("..." );  
    3.    
    4.  ...
    5.     foreach($sim as $k=>$v){
    6.         $arr[$v] = '1';
    7.     }
    8.  
    9. $res = "INSERT INTO tabl
    10.         (theme, sub_theme, text, ds) VALUES (:theme, :sub_theme, :text, :ds)";
    11.         $data = $db->prepare($res);  
    12.         $data->bindParam(':theme', $theme, PDO::PARAM_STR);      
    13.         $data->bindParam(':sub_theme', $sub_theme, PDO::PARAM_STR);
    14.         $data->bindParam(':text', $text, PDO::PARAM_STR);      
    15.         $data->bindParam(':ds', $ds, PDO::PARAM_STR);
    16.        
    17.         $data->execute();  
    18.  
    19. $query = "UPDATE tabl SET";
    20. $id = $db->quote($id);
    21. foreach ($arr as $k => $v) {  
    22.  $query .= ' '.$k.' = 1,';
    23. }
    24. $query = substr($query, 0, -1).' WHERE id= '. $id; // получаем запрос в виде UPDATE tabl SET text1= 1, text2 = 1, text3 = 1 WHERE id = '4'
    25. $s = $db->prepare($query);
    26.  $s->execute();
     
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Текст ошибки проверял? Или сидим дальше ждём когда на форм пхп-программистов вдруг заглянут экстрасенсы, увлекающиеся пхп?
     
  5. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Не идет никаких ошибок, или я их не вижу
     
  6. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Перекопал все, заработало, но как этот говнокод к нормальному привести еще, будем думать)

    Код (Text):
    1.  
    2.  
    3.     $simpt = array_unique($_POST['simpt']);
    4.  
    5.     foreach($simpt as $k=>$v){
    6.         $arr[$v] = '1';
    7.     }
    8.         $arr['theme'] = $_POST['theme'];
    9.         $arr['sub_theme'] = $_POST['sub_theme'];
    10.         $arr['text'] = $_POST['dstext'];
    11.         $arr['ds'] = $_POST['ds'];
    12.     $keys = array_keys($arr);  
    13.     $keys = implode(", ", $keys);
    14.  
    15.     $val = array_values($arr);  
    16.     $val = implode("', '", $val);
    17.     $val = "'". $val. "'";
    18.  
    19.     $q = "INSERT INTO test";
    20.     $q .= ' ('.$keys.')';
    21.     $q .= ' VALUES (' . $val . ')';
    22.     print_r($q);
    23.  
    24. $data = $db->prepare($q);  
    25. $data->execute();  
     
    #6 seifer, 6 авг 2017
    Последнее редактирование: 6 авг 2017
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.797
    Симпатии:
    1.331
    Адрес:
    Лень
    PHP:
    1.         $arr['theme'] = $_POST['theme'];
    2.         $arr['sub_theme'] = $_POST['sub_theme'];
    3.         $arr['text'] = $_POST['dstext'];
    4.         $arr['ds'] = $_POST['ds'];
    ты уверен что придут посты с указанными ключами ?
    PHP:
    1. $INPUTS = filter_input_array ( INPUT_POST, $ARGS );
    PHP:
    1. $data = $db->prepare($q);
    2. $data->execute();
    ты же юзаешь плейсхолдер ( подготовленные запросы ), но зачем то в запрос пихаешь грубо говоря "Отстой"