Re: [PHP-DB] PDO bindValue ORDER BY

2008-11-01 Thread Matthew Peltzer
ok... this makes more sense now.  I know in the past I tried to do
something similar with table names in the WHERE clause, and that
didn't work in the same manner.

Is there a better way to do what I'm trying to do? that is, sorting
within the SQL statement based on a supplied column name without out
writing multiple SQL statements?

for now my work around is to some thing like:

$sort = mysql_real_escape_string($sort);
$sql = SELECT * FROM `table` ORDER BY `$sort`;

which makes me queasy because I spent a lot of time getting away from
inlining variables in SQL statements.


On Fri, Oct 31, 2008 at 6:46 PM, Post TUDBC [EMAIL PROTECTED] wrote:
 Technically, bound parameter is expecting a value, such as
WHERE ID=:id
 However, ORDER BY is followed by a field name, such as
   ORRDER BY ID
 So I don't think it should work.

 If it does work, then it is a sign that the database driver is not
 really preparing the statement (as it should for performance reason),
 but it is just substituiting values to compose a SQL (just for your
 convenience).

 On 10/31/08, Matthew Peltzer [EMAIL PROTECTED] wrote:
 Are pdo bound parameters within an ORDER BY clause broken in php 5.2.5?

  I find that in php 5.2.6 this works as expected:

  ?php
  $sql = 'SELECT * FROM `table` ORDER BY :sort';
  $stmt = $pdo-prepare($sql);
  $stmt-bindValue(':sort', $sort, PDO::PARAM_STR);
  $stmt-execute();
  print_r($stmt-fetchAll(PDO::FETCH_ASSOC));
  ?

  but under php5.2.5 the ORDER BY clause silently fails.  Also,
  parameters bound to SELECT or WHERE or LIMIT clauses function
  correctly, but ORDE BY still has no effect.  If I remove the
  $stmt-bindValue(':sort', $sort, PDO::PARAM_STR); line or the ORDER
  BY :sort I get a number of bound variables does not match number of
  tokens error.

  So it appears the parsing mechanism is funcitoning, but what ever is
  responsible for binding to ORDER BY is not.

  I've looked in bug reports and the change logs, but did not find a
  explicit reference to this issue.


  --
  -- Matthew Peltzer
  -- [EMAIL PROTECTED]


  --
  PHP Database Mailing List (http://www.php.net/)
  To unsubscribe, visit: http://www.php.net/unsub.php






-- 
-- Matthew Peltzer
-- [EMAIL PROTECTED]

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-DB] PDO bindValue ORDER BY

2008-10-31 Thread Matthew Peltzer
Are pdo bound parameters within an ORDER BY clause broken in php 5.2.5?

I find that in php 5.2.6 this works as expected:

?php
$sql = 'SELECT * FROM `table` ORDER BY :sort';
$stmt = $pdo-prepare($sql);
$stmt-bindValue(':sort', $sort, PDO::PARAM_STR);
$stmt-execute();
print_r($stmt-fetchAll(PDO::FETCH_ASSOC));
?

but under php5.2.5 the ORDER BY clause silently fails.  Also,
parameters bound to SELECT or WHERE or LIMIT clauses function
correctly, but ORDE BY still has no effect.  If I remove the
$stmt-bindValue(':sort', $sort, PDO::PARAM_STR); line or the ORDER
BY :sort I get a number of bound variables does not match number of
tokens error.

So it appears the parsing mechanism is funcitoning, but what ever is
responsible for binding to ORDER BY is not.

I've looked in bug reports and the change logs, but did not find a
explicit reference to this issue.


-- 
-- Matthew Peltzer
-- [EMAIL PROTECTED]

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php