Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przygotowane zestawienia MySQL z listą zmiennych o zmiennym rozmiarze

Przychodzi mi do głowy kilka rozwiązań.

Jednym z rozwiązań może być utworzenie tabeli tymczasowej. Wstaw do tabeli dla każdego parametru, który miałbyś w klauzuli in. Następnie wykonaj proste dołączenie do tabeli tymczasowej.

Inną metodą może być zrobienie czegoś takiego.

$dbh=new PDO($dbConnect, $dbUser, $dbPass);
$parms=array(12, 45, 65, 33);
$parmcount=count($parms);   // = 4
$inclause=implode(',',array_fill(0,$parmcount,'?')); // = ?,?,?,?
$sql='SELECT age, name FROM people WHERE id IN (%s)';
$preparesql=sprintf($sql,$inclause);  // = example statement used in the question
$st=$dbh->prepare($preparesql);
$st->execute($parms);

Podejrzewam, ale nie mam dowodu, że pierwsze rozwiązanie może być lepsze w przypadku większych list, a drugie sprawdzi się w przypadku mniejszych list.

Aby @orrd był szczęśliwy, oto wersja zwięzła.

$dbh=new PDO($dbConnect, $dbUser, $dbPass);
$parms=array(12, 45, 65, 33);
$st=$dbh->prepare(sprintf('SELECT age, name FROM people WHERE id IN (%s)',
                          implode(',',array_fill(0,count($parms),'?'))));
$st->execute($parms);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Jak zresetować lub zmienić hasło roota MySQL?

  2. Korzystanie z Oracle JDeveloper z MySQL Database Service na Oracle Cloud Platform, część 2

  3. Jak mogę poprawić błąd ładowania MySQL?

  4. Nie można połączyć się z MySQL 4.1+ przy użyciu starego uwierzytelniania

  5. Włącz obsługę silnika pamięci masowej MySQL InnoDB podczas instalacji XAMPP