2

Is there a solution for this error? Is it happening because of the mySQL time format in the query?

SQL Error
Error:SQLSTATE[HY093]: Invalid parameter number: number of bound variables 
does not match number of tokens 

Array
(
    [:service_user_id] => 90
    [:week_beginning] => 2012-08-06
    [:week_ending] => 2012-08-12
)
Backtrace:C:\wamp\www\Sitetest_9.6.12\public_html\main\ajax\timetable_grid_load.php at line 45 

This is the PHP using php-pdo-wrapper-class:

$bind = array(
    ":service_user_id" =>  $service_user_id,
    ":week_beginning" => $week_beginning,
    ":week_ending" => $week_ending,
);


$query = "SELECT 
    id AS sessID,
    session_day as sessDay,
    session_type_id,
    provider_id,
    description,
    TIME_FORMAT(start_time, '%H:%i') as start_time,
    TIME_FORMAT(finish_time, '%H:%i') as finish_time,
    start_date,
    finish_date,
    (SELECT absence FROM attendance WHERE sessID = session_id AND absence_date = DATE_ADD(':week_beginning', INTERVAL sessDay-1 DAY)) AS attendance
    FROM
    sessions
    WHERE
    service_user_id = :service_user_id AND
    start_date <= ':week_ending' AND
    (finish_date >= ':week_beginning' OR
    finish_date IS NULL OR 
    finish_date=0)
    ORDER BY session_day ASC";      

$result= $db->run($query,$bind);
return $result;

1 Answer 1

3

Do not use single quotes to delimit parameters in a prepared statement. It's not necessary (that's the whole point of having prepared statements in the first place).

    ...
WHERE
    service_user_id = :service_user_id AND
    start_date <= :week_ending AND
    (finish_date >= :week_beginning OR
    finish_date IS NULL OR 
    ...

Hint: start_date <= ':week_ending' translates to less than or equal to the literal string ":week_ending".

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.