Re: parameters not working under PDO

From: Date: Wed, 31 Oct 2007 18:58:28 +0000
Subject: Re: parameters not working under PDO
References: 1  Groups: php.db 
Request: Send a blank email to php-db+get-44279@lists.php.net to get a copy of this message
O/H Chris Curvey ??????:
It's quite possible that I'm missing something obvious here. The following code fragment does not return any rows, but if I take out the parameters and replace them with hardcoded strings (enclosed in single quotes), I get the right results. I've scattered "print" statements throughout, and the query seems to get past execute() OK, it's just not returning anything from the call to fetch() Am I missing something obvious? $stmt = $conn->prepare("select t.z from towns t
                        join counties c on t.county_z = c.z
                        where t.me = ?
                        and c.state_z = ?");
if ($stmt->execute($parts)) {
    while ($row = $stmt->fetch()) {
         $town_z = $row['z'];
    }
What is $parts doing ?? You just need execute() and I suppose although not posted that you did construct the object like:
$conn| = new PDO('mysql:host=localhost;dbname=test', $user, $pass); |A good choice is to tell fetch a way to retrieve your data like this: $town_z = $stmt->fetch(PDO::FETCH_ASSOC); although I think that it will get both result sets in case you don't define.
} else {
    print $stmt->errorCode();
    print_r($stmt->errorInfo());
} Thanks in advance! A better way debug that I know is using exceptions like:
try { $sth = $conn->query($query); $rs = $sth->fetch(); } catch (Exception $e) { print "failed :".$e->getMessage(); } You can use try {} with almost everything so give it a "try" :-) . Send us some feed back or post full source if you keep having trouble. -- Thodoris

« previous php.db (#44279) next »