Fullscreen
Loading...
 
Skip to main content

PDOException: SQLSTATE[HY093] - when reloading a session (after database transfer SQL format)

Status
Closed
Subject
PDOException: SQLSTATE[HY093] - when reloading a session (after database transfer SQL format)
Version
4.x
Category
  • Consistency
  • Error
Feature
All / Undefined
Resolution status
Invalid
Submitted by
Ushindi Gedeon
Lastmod by
Ushindi Gedeon
Rating
(0)
Description

Hello,

This happens in the same context as my others tracks (3029 - 3057).

This is a problem that is completely identified.
In my opinion it is important.

Context

system

The database has been saved in SQL and loaded with upgraded versions of mysql and php 5.3.2.
There is in my opinion no relation with the system context.

Program execution

During start the current session prefs contained into cache participate to generation of the query launch to reinit the context of previous current session.

ERROR

__A fatal error occurs in tikisession-pdo.php on line 44 function write statement <$sth->execute();>

Message

PDOException: SQLSTATEHY093: Invalid parameter number: no parameters were bound in D:\Trebly\Teawik-ld8-422a\lib\tikisession-pdo.php on line 44__

Analyze

The var_dump($qry) in "prepare" function (see my interface in Class TikiDb_Pdo) gives (extract)

''object(PDOStatement)42
public 'queryString' => string 'update sessions set data='need_reload_prefs|b:0;serialized_prefs|a:9:{i:0;s:27:"feature....''

Problem identified

The problem comes from the fact that into the session->data you can find the HOMEPAGE article "title" which is, in this case (French):

s:46:"Page d'accueil spécifique des administrateurs";

so the " ' " not escaped generates the crash of the request.

Solution ?

Proposal, basis :

When the titles of articles (or any text which can occur into prefs or any query) are stored the " ' " must be escaped into the database.

Proposal for compatibility :

  1. identify any text which can be used into queries
  2. be sure that these text have " ' " escaped everywhere, if not

- upgrade database
- upgrade display for these text with escaped " ' "
- upgrade when text is got from forms the data transfer to database with the escaped " ' "
- set a test on syntax queries to catch this error. A simple test of " ' " into query which display error message (because it is impossible to execute a validate successful query).

Note :

Note : Temporarily I have implemented for me a syntax control and a validation test for " ' " into the query which escapes the incongruous " ' " with a warning message. This because with this title the content will not be found... but the query don't answers in a right manner.
To execute completely I have suppressed in my test database the " ' " into the titles. This can't be used in an operational config.

This occurs because I use for test an homepage which depend of the main group of users of the user.
So I have severals homepages managed as articles with a link to categories.

On his homepage a user can in this way find :

  1. his main homepage
  2. links to secondary homepages depending of his roles into the site

Solution
Workaround
Priority
25
Demonstrate Bug on Tiki 19+
Demonstrate Bug (older Tiki versions)
Ticket ID
3115
Created
Wednesday 14 April, 2010 00:16:29 UTC
by Bernard TREMBLAY
LastModif
Tuesday 02 June, 2026 08:11:26 UTC


Show PHP error messages