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

MySQL PDO, jak svázat parametry pro IN()

Přišel jsem na to:

$ids = '1,2,3';

Rozložte řetězec $ids do pole:

$ids_array = explode(',', $ids);

To dává:

$ids_array[] = 1;
$ids_array[] = 2;
$ids_array[] = 3;

Vytvořte řetězec otazníků oddělený čárkami. Počet otazníků odpovídá počtu hodnot pole

$in  = str_repeat('?,', count($ids_array) - 1) . '?';

Tím vznikne řetězec, který vypadá takto:

?,?,?

Vložte tento řetězec do sql

$q = "SELECT *
    FROM table
    WHERE id IN($in) ";


$stmt = $this->db->prepare($q);

Proveďte dotaz a předejte pole jako parametr

$stmt->execute($ids_array);



  1. Python 'float64' nelze převést na typ MySQL, ale v ručním dotazu to není žádný problém

  2. Indexování databáze v kostce s porovnáním B+strom a hash

  3. Průtok vzduchu 1.10.0 přes Ansible

  4. Zachování ORDER BY v SELECT INTO