sql >> Databáze >  >> RDS >> Mysql

Jak použít řetězec PHP v dotazu LIKE mySQL?

Máte chybnou syntaxi; není potřeba vkládat tečku do řetězce s dvojitými uvozovkami. Místo toho by to mělo být více jako

$query = mysql_query("SELECT * FROM table WHERE the_number LIKE '$prefix%'");

Můžete to potvrdit vytištěním řetězce, abyste viděli, že je identický s prvním případem.

Samozřejmě to není dobrý nápad jednoduše vložit proměnné do řetězce dotazu, jako je tento, kvůli nebezpečí vložení SQL. Přinejmenším byste měli ručně escapovat obsah proměnné pomocí mysql_real_escape_string , což by vypadalo možná takto:

$sql = sprintf("SELECT * FROM table WHERE the_number LIKE '%s%%'",
               mysql_real_escape_string($prefix));
$query = mysql_query($sql);

Všimněte si, že uvnitř prvního argumentu sprintf znak procenta je třeba zdvojnásobit, aby se ve výsledku objevil jednou.



  1. Výchozí umístění databáze PostgreSQL v systému Linux

  2. Změna sloupce:null na ne null

  3. Sledování latence čtení/zápisu

  4. Zlepšete výkon dotazů SQL Server na velkých tabulkách