i ont cette requête:correcte syntaxe SQL (PHP et MySQL Combo)
SELECT
CONCAT(CT.FIRSTNAME,' ', CT.LASTNAME) AS NAME,
T.TYPE_OF_VISITOR_NAME AS TYPE_OF_VISITOR,
I.INDUSTRY_NAME AS INDUSTRY
FROM
COMPANY CY, CONTACTS CT, INDUSTRY I, TYPE_OF_VISITOR T
WHERE
CY.INDUSTRY_ID = I.INDUSTRY_ID
AND CY.COMPANY_ID = CT.COMPANY_ID
AND CT.TYPE_OF_VISITOR = T.TYPE_OF_VISITOR_ID
AND '$searchType' LIKE '%$searchString%'
où $searchType
est une valeur à partir d'une zone de liste déroulante qui contient 2 valeurs:
- NOM (ce n'est pas reconnu dans la base de données aussi longtemps que je l'utilise
CONCAT(CT.FIRSTNAME,' ', CT.LASTNAME)
le problème est que lorsque l'utilisateur choisiCOMPANY_NAME
je vais avoir mauvaise syntaxe) - COMPANY_NAME
et $searchString
est une zone de saisie pour la recherche.
dans la requête ci-dessus. Lorsque l'utilisateur recherche quelque chose sous le type COMPANY_NAME, cela fonctionne. le problème est que je veux avoir une option de recherche aussi pour le nom (prénom et nom de famille). Malheureusement, les colonnes de ma base de données sont FIRSTNAME
et LASTNAME
. que j'ai concaténé dans l'instruction select.
Question:
- Quelle est la bonne façon de parvenir à la recherche de
FIRSTNAME
etLASTNAME
sans affecter le résultat lorsque l'utilisateur veut rechercherCOMPANY_NAME
Autant que possible, je veux faire ceci en utilisant une seule requête. Toute aide serait très appréciée. Merci
imaginer utilisateur voir '" CONCAT (CT.FIRSTNAME, » », CT.LASTNAME) "'. Ils vont paniquer. – Yaje
Sinon, nous pouvons écrire une condition comme: if ($ searchType == 'NOM') {$ searchType = "CONCAT (CT.FIRSTNAME, '', CT.LASTNAME)"; } SELECT CONCAT (CT.FIRSTNAME, » », CT.LASTNAME) que le nom, T.TYPE_OF_VISITOR_NAME AS TYPE_OF_VISITOR, I.INDUSTRY_NAME AS INDUSTRIE DE LA SOCIETE CY, CONTACTS CT, INDUSTRIE I, T TYPE_OF_VISITOR OÙ CY.INDUSTRY_ID = I.INDUSTRY_ID ET CY.COMPANY_ID = CT.COMPANY_ID ET CT.TYPE_OF_VISITOR = T.TYPE_OF_VISITOR_ID ET LIKE '$ searchType' '% $% searchString' – bini