Home
 

Customer Support

Search for keywords:

Browse by category:

Why does PHPLIB sessions give me a MySQL Database
error?

PHPLIB version 7.2b and 7.2c sometimes throw an error similar to:

Database error: Invalid SQL: insert into active_sessions ( sid, name, val, changed ) values ('096b796cb7f48fa6fcd118c1e6854e72', 'example_sessions', 'dR0xPQkFMU1snYXV0aCddc7IA==', '20010101151401')
MySQL Error: 1062 (Duplicate entry 'example_sessions-096b796cb7f48fa6fcd118c1e6854e72' for key 1)
Session halted.

To fix this, first get the file ct_sql.inc from phplib 7.2c. It is ok if you are using 7.2b, just get this one file if you do not want to completely upgrade phplib.

Now find the function ac_store() in the file ct_sql.inc. That whole function should be changed to this:

function ac_store($id, $name, $str) {
$ret = true;

switch ( $this->encoding_mode ) {
case "slashes":
$str = addslashes($name . ":" . $str);
break;

case "base64":
default:
$str = base64_encode($name . ":" . $str);
};

$name = addslashes($name);

## update duration of visit
global $HTTP_REFERER, $HTTP_USER_AGENT, $REMOTE_ADDR;

$now = date("YmdHis", time());
$uquery = sprintf("update %s set val='%s', changed='%s' where sid='%s' and name='%s'",
$this->database_table,
$str,
$now,
$id,
$name);
$squery = sprintf("select count(*) from %s where val='%s' and changed='%s' and sid='%s' and name='%s'",
$this->database_table,
$str,
$now,
$id,
$name);
$iquery = sprintf("insert into %s ( sid, name, val, changed ) values ('%s', '%s', '%s', '%s')",
$this->database_table,
$id,
$name,
$str,
$now);

$this->db->query($uquery);

# FIRST test to see if any rows were affected.
# Zero rows affected could mean either there were no matching rows
# whatsoever, OR that the update statement did match a row but made
# no changes to the table data (i.e. UPDATE tbl SET col = 'x', when
# "col" is _already_ set to 'x') so then,
# SECOND, query(SELECT...) on the sid to determine if the row is in
# fact there,
# THIRD, verify that there is at least one row present, and if there
# is not, then
# FOURTH, insert the row as we've determined that it does not exist.

if ( $this->db->affected_rows() <= 0
&& $this->db->query($squery)
&& $this->db->next_record()
&& $this->db->f(0) == 0
&& !$this->db->query($iquery)) {

$ret = false;
}
return $ret;
}

User-Contributed Notes

add a note
There are no user-contributed notes for this topic.

Related Questions:


How do I set PHP include_path?

What PHP modules are available and how do I load them?

How do I change timezone for PHP?

How do I do html form file uploads?

Can I run a PHP script on cron?

Why does a PHP function give an error that it is undefined?

Why does PHP HTTP authentication not work?

Why does my PHP script throw an Internal Server Error 500?

What version of PHP are you running and can I see a phpinfo()?

I can't upload a file larger than 8MB through a PHP script

Can you change session cookie timeout in php.ini for me?

Do you have a quick form mail script?

Can I use a PHP extension like PDFlib that I have personally purchased a license to use?

Do you offer PHP5 with MySQLi?

Where is the php_error_log?

Can I have all .html pages parsed as PHP?

What's the difference between running PHP as a cgi or as a module in safe mode?

The PHP curl module doesn't work.

My PHP session is lost whenever I go to a secure URL using the shared SSL certificate.

Do you provide PEAR?

Where can I download free PHP scripts?

How do I get different character sets within my PHP page to display correctly?

Do I need to set any 777 permissions in order for my PHP scripts to create files and directories?

Can I use Smarty Templates?

The PDFlib extension gives a UPR description error.

How do I execute my .php files as PHP 5?

How do I use the url_rewriter.tags setting for PHP?

What is CAPTCHA? How can I use it?

Why does flush() not flush the data to my browser?

Will my Zend Encoded files work?

The pfpro pfpro_process() function keeps giving me Error 31

Will IonCube encoded files work?

I need the virtual() function and it is not available.

Why does getallheaders() say undefined function?

Can I talk over SSL when opening an IMAP connection with the PHP imap_open() function?

How can one PHP file transparently handle all search-engine friendly URLs?

My PHP script needs a newer version of Zend Optimizer. What do I do?

How do I put PHP sessions into a database instead of the default files-based method?

Browse Categories:

Getting Started, FTP, Telnet/SSH, Moving Domains, E-mail, Traffic Reports, Mailing Lists, Apache, PHP, CGI, Other Server-Side Scripting, MySQL Database, Imaging Libraries, Other Software, Billing & Terms, Control Panel, E-commerce, Pre-Sales


Tiny Modwest Logo         Copyright 2000-2008 by Modwest, Inc.          About Us    |    Blog    |    Jobs    |    Web Design    |    Contact Us