2012-04-27 5 views
1

Итак, вот что я пытаюсь выполнить: я работал с SQL много раз в прошлом, но он всегда был с coldfusion, никогда с PHP. Я просмотрел синтаксис для создания sql-запросов и придумал это много (я верю, что использование подготовки помогает защитить от SQL-инъекции). Моя общая цель состоит в том, чтобы настроить страницу таким образом, чтобы она вытягивала все строки из таблицы украшений, в которой есть cat_id, соответствующая таблице категорий. Я просто не уверен, что если я начну это правильно или нет. Таблица ювелирная имеет 4 поля (ID, кот идентификатор, имя и изображение)Как сделать вызовы SQL-инъекции в пользовательскую таблицу, которую я создал в моей базе данных Wordpress?

<?php 

$categorys = $wpdb->get_results ($wpdb->prepare("SELECT id FROM $wpdb->categories 
     WHERE name = '(the_slug())'")); 

    $jewelrys = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->jewelry 
     WHERE post_status = 'publish' 
     AND cat_id = $categorys->id ")); 

    foreach ($jewelrys as $jewelry) { 
    echo '<div id="jBox"><a href="/wp-includes/images/jewelryImages/' . $jewelry->image . '"><img src="/wp-includes/images/jewelryImages/' . $jewelry->image . '" /><br />' . $jewelry->name . '</div>'; 
    } 
?> 

Также я ищу для добавления пагинации отображения только 9 на каждую страницу. Любые советы или рекомендации оцениваются =)

Обновление: Я только что проверил категорию с простым выражением эха, чтобы узнать, не тянет ли что-нибудь, а это не так, это неправильно?

+0

+1 для беспокойства по поводу инъекции SQL! – eggyal

ответ

3

Чтобы избежать SQL-инъекций, используйте подготовленные инструкции - таким образом вы можете передать переменные термины MySQL в качестве параметров (которые, как известно, не оценивать для SQL), а не сделать их частью вашей команды SQL.

См How can I prevent SQL injection in PHP?

Для реализации разбиения на страницы, вы хотите посмотреть в LIMIT статьи в MySQL - например,

SELECT ... LIMIT 0,9; -- get 9 records starting from record 0 
SELECT ... LIMIT 9,9; -- get 9 records starting from record 9 
SELECT ... LIMIT 18,9; -- get 9 records starting from record 18 
-- etc 
+0

ха-ха, я знаю, у havent был шанс вернуться сюда, извините! да, это очень помогло мне, я склонен программировать себя в угол иногда = P – crohde7707

Смежные вопросы