2012-05-16 3 views
0

Я создаю сайт, и мне нужно получить некоторую информацию. У меня есть этот запрос.Результат SQL-запроса, сравнение и где статья

$SQL = "SELECT distretto_108, provinca_113, regioni_116, tipologia_pdv_106, 
     richiesta_ccnl_107, coop_va_109, nome_pdv_110, 
     indirizzo_pdv_111, localita_112 
     FROM civicrm_value_informazioni_su_tute_le_schede_p_22 "; 

Мне нужно добавить другой код:

WHERE civicrm_event.title_en_US='".addslashes($_GET["titles"])."' 

, но это не работает ... мне нужно сравнить, скажем, идентификатор другой таблицы с идентификатором текущей таблицы .. . Как это сделать?

Заранее спасибо ...

+3

Hello ** SQL injection **! – gdoron

+0

О нет, я пытаюсь добавить несколько таблиц вместе ... Мне нужно создать отчет для событий ... –

+0

1. использовать mysql_real_escape_string() или PDO с привязками paramater not addslashes() 2. В чем проблема? Почему вы не можете добавить предложение where? Что вы пытаетесь достичь? – evan

ответ

0

Вы должны узнать кое-что о соединении таблиц ...

Не знаю, что соотношение между этими двумя таблицами (просто сказал: какой столбец из одной таблицы указывает в какой столбец в другой), но попробовать что-то подобное (изменение необходимо для удовлетворения структурировать БД) - теперь предположим, обе таблицы были связаны столбец с именем event_id:

$SQL = "SELECT distretto_108, provinca_113, regioni_116, tipologia_pdv_106, 
     richiesta_ccnl_107, coop_va_109, nome_pdv_110, 
     indirizzo_pdv_111, localita_112 
    FROM civicrm_value_informazioni_su_tute_le_schede_p_22 cvistlsp22 
    LEFT JOIN civicrm_event ce ON ce.event_id = cvistlsp22.event_id 
    WHERE ce.title_en_US='".mysql_real_escape_string($_GET["titles"])."'"; 

civicrm_value_informazioni_su_tute_le_schede_p_22 имя таблицы очень долго, и вы не сможет создать таблицу с таким длинным именем в другой СУБД (например, ORACLE), поэтому постарайтесь сделать его короче, пока еще самоописываемый ...

Если Вы хотите присоединиться к таблицам, которые они должны иметь отношение, подробнее об отношениях и как использовать их здесь: http://net.tutsplus.com/tutorials/databases/sql-for-beginners-part-3-database-relationships/

0

Вы извлекаете данные из таблицы civicrm_value_informazioni_su_tute_le_schede_p_22 в свой запрос, в то время как предложение where, которое вы добавляете, относится к таблице civicrm_event. Вам нужно добавить эту новую таблицу в предложение from и сделать соединение между двумя таблицами, используя какой-то общий ключ. Пример ниже:

$SQL = " 
SELECT distretto_108, provinca_113, regioni_116, tipologia_pdv_106, richiesta_ccnl_107, coop_va_109, nome_pdv_110, indirizzo_pdv_111, localita_112 
FROM civicrm_value_informazioni_su_tute_le_schede_p_22 
    JOIN civicrm_event ON civicrm_value_informazioni_su_tute_le_schede_p_22.ID_PK = civicrm_event.ID_FK 
WHERE civicrm_event.title_en_US='".addslashes($_GET["titles"]) 
"; 

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

Обратите внимание, что использование параметров запроса не рекомендуется. Пожалуйста, прочитайте PHP Documentation here для более подробного объяснения.