Ik wil een zoekopdracht uitvoeren die zoekt op kleine en hoofdletters en nummers gemengd door elkaar heen. Bv. als je 'z1AfJ90z100826' of 'a1AfJ90Z100826' als zoekopdracht verzend en in de de database staat 'S1AfJ90Z100826' dan krijg ik geen resultaat maar alleen als ik op 'S1AfJ90Z100826' zoek
Ik heb dit staan:
<?
$SQL="select * from inkoopfactuurdetails where ";
$SQL=$SQL."productserienr = '".$snr."' or productserienr = '".$snr2."'";
?>
maar ook dit geprobeerd uit phpmyadmin wat werkt als ik daar zoek maar niet als ik het in mijn script doet
<?
$SQL = 'SELECT * FROM `inkoopfactuurdetails` WHERE `productserienr` LIKE CONVERT(_utf8 '".$snr."' USING latin1) COLLATE latin1_swedish_ci';
De tweede en de derde upper moeten in quotes om bij MySQL aan te komen. Nu denkt php dat het er iets mee moet doen. Het zijn zoals Karl zegt: MySQL functies.
[edit]
@Dennis: het is kwestie van syntax, de juiste quootjes op de juiste plaats. De truc met de MySQL upper functie is namelijk wel je oplossing.
?
Onbekende gebruiker
06-08-2010 20:33
Aad B op 06/08/2010 20:31:52
De tweede en de derde upper moeten in quotes om bij MySQL aan te komen. Nu denkt php dat het er iets mee moet doen. Het zijn zoals Karl zegt: MySQL functies.
Hiervoor is het dus beter als je gewoon SQL in uppercase schrijft ;-)
Dit gedaan maar krijg nog steeds geen goed resultaat, maar geen foutmelding meer
<?
$SQL=$SQL."UPPER(productserienr) = UPPER('$snr') OR productserienr = UPPER('$snr2')";
?>
strtoupper ook geprobeerd wat wel een foutmelding geeft :S
$snr en $snr2 moeten buiten de quotes komen, moeten dus blauw kleuren zoals in je eerste post en dan werkt het!!
<?
$SQL="select * from inkoopfactuurdetails where ";
$SQL=$SQL."upper(productserienr) = upper('".$snr."') or upper(productserienr) = upper('".$snr2."')";
?>
<?
$SQL=$SQL."UPPER(productserienr) = UPPER('".$snr."') OR UPPER(productserienr) = UPPER('".$snr2."')";
?>
Zo zijn se blauw maar krijg nog steeds resultaat alleen als ik het exact het zelfde laat zoeken
Er moet nog een upper op de tweede, na de or maar of dat nu je probleem oplost vraag ik me af. De SQL is nu goed en het zou moeten werken. Voeg eens MySQL foutafhandeling toe.
Het werkt in ieder geval wel, hier is een testje (op de command line van MySQL):
mysql> select emailadres from klant_order where upper(emailadres)=upper('[email protected]');
+--------------+
| emailadres |
+--------------+
| [email protected] |
+--------------+
1 row in set (0.00 sec)
Foutafhandeling
<?
hier je query afschieten
if(!$sql1)
{
echo '<br>';
// Mysql error opvangen
echo 'Er is een fout opgetreden in de query. <br />';
echo mysql_error();
echo '<br>';
echo $sql1;
}
else
{
hier je code om de gevonde record(s) te tonen
}
?>