За последние 24 часа нас посетили 22952 программиста и 1241 робот. Сейчас ищет 751 программист ...

Подготавливаемый запрос PHP

Тема в разделе "PHP и базы данных", создана пользователем Serebos, 27 апр 2020.

Метки:
  1. Serebos

    Serebos Новичок

    С нами с:
    27 апр 2020
    Сообщения:
    3
    Симпатии:
    1
    Всем привет. Помогите, пожалуйста, разобраться с корректностью кода.
    1. там ли htmlspecialchars и он ли должен быть для экранирования?
    2. синтаксические ошибки в написанном prepare()?

    PHP:
    1. function insert($name, $desc, $year, $rating, $poster, $category_id) {
    2.     $mysqli = new mysqli('localhost', 'root', '', 'kinomonster');
    3.     if ($mysqli->connect_errno) {
    4.         printf('Connect failed: ' . $mysqli->connect_error);
    5.         exit();
    6.     }
    7.  
    8. /*  instead 5,6,7 strings
    9. if ($mysqli->connect_errno) {
    10.     die('Connect failed: ' . $mysqli->connect_errno);
    11. }*/
    12.  
    13.     $mysqli->set_charset('utf8');
    14.  
    15.     /*$query = "INSERT INTO movie VALUES(null, '$name', '$desc', '$year', '$rating', '$poster', Now(), '$category_id')";*/
    16.      $stmt = htmlspecialchars($mysqli->prepare('INSERT INTO movie (null, name, desc, year, rating, poster, Now(), category_id) VALUES (?,?,?,?,?,?)'));
    17.     $result = false;
    18.     if($mysqli->query($query)) {
    19.         $result  = true;
    20.     }
    21.     return $result;
    22. }
    23.  
    24. $xml = simplexml_load_file("xml/movies.xml") or die("Error: Cannot create object");
    25.  
    26.  
    27. $title = null;
    28. $description = null;
    29. $post = null;
    30. $rating = null;
    31. $year = null;
    32.  
    33. foreach ($xml as $movie_key => $movie) {
    34.     $title = $movie->title_russian;
    35.     $description = $movie->description;
    36.     $year = $movie->year;
    37.  
    38.     foreach ($movie->poster->big->attributes() as $poster_key => $poster) {
    39.         $post = $poster;
    40.     }
    41.  
    42.     if($movie->imdb) {
    43.         $rating = $movie->imdb->attributes()['rating'];
    44.     } else {
    45.         $rating = null;
    46.     }
    47.  
    48.  
    49. $stmt -> bind_param('ssidsi', null, '$name', '$desc', '$year', '$rating', '$poster', Now(), '$category_id');
    50. $stmt -> execute();
    51.  
    52.    insert($title, $description, $year, $rating, $post, 1);
    53. }
    54.  
    55. echo "<pre>";
    56. print_r ($xml);
    57. echo "</pre>";
    СПАСИБО!
     
    #1 Serebos, 27 апр 2020
    Последнее редактирование модератором: 4 май 2020
  2. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    1. Оформи код в тэги. Невозможно читать кашу.
    2. htmlspecialchars используется обычно при выводе информации, например

    HTML:
    1.  
    2. <div class="head">
    3.   <?=htmlspecialchars($_POST["name"])?>
    4. </div>
    5.  
    А записываешь ты экранируя данные.
     
  3. Serebos

    Serebos Новичок

    С нами с:
    27 апр 2020
    Сообщения:
    3
    Симпатии:
    1
    спасибо за ответ. За этот форум забыл, уведомлений не приходило на электронку. Сейчас добавлю страницу в закладки, для отслеживания темы, в случае появления новых вопросов.

    Вчера только разобрался с этим кодом! Продолжаю далее изучать php!
     
    denis01 нравится это.