SQL PHP PDO Suche mit LIKE statement -> Invalid parameter number

M.E.

Lt. Commander
Registriert
Jan. 2007
Beiträge
1.923
Hallo,

Ich implementiere gerade eine Suche in PHP mit SQL und PDO.
Kann mir jemand einen Tipp geben, warum dieser Code zu einem
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number'
führt?
Code:
 public function searchTerm($term) {
        $this->stmt = $this->pdo->prepare(
"SELECT * FROM Label WHERE `name` LIKE :term OR `description` LIKE :term ");
        $this->stmt->bindValue(':term', "%{$term}%");
        $this->stmt->execute();
        return $this->stmt;
    }
Kann ich :term eventuell nicht zweimal im SQL verwenden? Wie macht man das richtig?
Der Fehler tritt in der Zeile von
Code:
$this->stmt->execute();
auf.

Ich habe selbst schon geoogelt, hat aber nicht geholfen.
Referenzen:
http://stackoverflow.com/questions/...nd-variables-does-not-match-number-o#24916654
http://stackoverflow.com/questions/15980148/php-pdo-mysql-like-and-prepared-statements
http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php

Danke
MfG
M.E.
 
http://php.net/manual/en/pdo.prepare.php schrieb:
You must include a unique parameter marker for each value you wish to pass in to the statement when you call PDOStatement::execute(). You cannot use a named parameter marker of the same name more than once in a prepared statement, unless emulation mode is on.
Geht nicht.
 
Code:
  public function searchTerm($term) {
            $this->stmt = $this->pdo->prepare(
    "SELECT * FROM Label WHERE `name` LIKE :term1 OR `description` LIKE :term2 ");
            $this->stmt->bindValue(':term1', "%{$term}%");
$this->stmt->bindValue(':term2', "%{$term}%");
            $this->stmt->execute();
            return $this->stmt;
        }

So funktionierts! Danke für den Hinweis :)
 
Zurück
Oben