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

PHP PDO escape otazník, takže si nemyslí, že je to zástupný symbol

PDO není zmaten otazníkem uvnitř uvozovek. Právě jsem to testoval s PHP 5.5.15.

$sql = "SELECT CONCAT('path/to/page/?id=', id) AS link FROM foo WHERE name = ?;";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(1, 'name');
$stmt->execute();
print_r($stmt->fetchAll());

Funguje to dobře, bez chyby o špatném počtu parametrů. Vaše chyba je způsobena způsobem, jakým vážete parametry, nikoli syntaxí SQL.

Mám podezření, že jste nám neukázali celý SQL dotaz, protože WHERE bez FROM je stejně syntaktická chyba. Takže musíte mít další zástupné symboly parametrů, které jste nám neukázali. Také by bylo užitečné, kdybyste nám ukázali způsob, jakým vážete parametry (nebo předáváte parametry do execute()).



  1. Problém s odečítáním data v Oracle

  2. postgresql:rozdělení časového období při události

  3. Počítání počtu provedených dotazů

  4. Jak určím datumový literál při psaní dotazu SQL ze serveru SQL, který je propojen s Oracle?