Re: Syntax problem PDO and bindvalue

From: Date: Mon, 12 Dec 2011 12:33:31 +0000
Subject: Re: Syntax problem PDO and bindvalue
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-315981@lists.php.net to get a copy of this message
On 12/12/2011 01:49 PM, Stephen wrote:
So I am getting this SQL error: Error selecting photographs: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''4'' at line 2 My code is: function updatephotos($dbh, $x) { echo $x['number'] . "<br />"; <<<<< this echo is 4 $sql = "SELECT * FROM photographs WHERE
              photo_filename LIKE '%2%' LIMIT 0, :q;";
$stmt = $dbh->prepare($sql); try {
        $stmt->bindValue( ':q', $x['number'], PDO::PARAM_INT );
        $stmt->execute();
      } catch (PDOException $e) {
            return 'Error selecting photographs: ' . $e->getMessage();
    }
while ( list( $id, $name, $alt, $caption) = $stmt->fetch(PDO::FETCH_NUM)) { echo $name . "<br />";
        }
return "test worked" ; } If I hard code the SQL as: $sql = "SELECT * FROM photographs WHERE
              photo_filename LIKE '%2%' LIMIT 0, 4";
all works well. Can anyone see what is wrong? How can I see the prepared SQL statement before it is executed? Thanks Stephen
$x = $x['number']; $stmt->bindValue( ':q', $x['number'], PDO::PARAM_INT ); i didnt dig deep down the problem [might be some C thing, pointer access or ...] but this solves it. Fatih P. http://blog.teknober.com

« previous php.general (#315981) next »