sql >> Databasteknik >  >> RDS >> Mysql

mysql PDO hur man binder LIKE

Du kan också säga:

SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')

att göra strängsammanfogningen i MySQL-änden, inte för att det finns någon speciell anledning att göra det i det här fallet.

Saker och ting blir lite svårare om den partiella wrd du letar efter kan i sig innehålla ett procent- eller understreck (eftersom de har speciell betydelse för LIKE-operatorn) eller ett omvänt snedstreck (som MySQL använder som ytterligare ett lager av escape i LIKE-operatorn — felaktigt, enligt ANSI SQL-standarden).

Förhoppningsvis påverkar det dig inte, men om du behöver göra rätt i fallet, här är den röriga lösningen:

$stmt= $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'");
$escaped= str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var);
$stmt->bindParam(':term', $escaped);


  1. MariaDB JSON_QUERY() Förklarad

  2. Det gick inte att påbörja en distribuerad transaktion

  3. Hur kan jag ansluta till SQL Server med integrerad säkerhet med JDBC-drivrutinen?

  4. Hur man säkrar MySQL/MariaDB-servrar