Bug #80445 [Com]: Using float bind parameter returns weird error

From: Date: Mon, 30 Nov 2020 02:52:00 +0000
Subject: Bug #80445 [Com]: Using float bind parameter returns weird error
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-230717@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=80445&edit=1 ID: 80445 Comment by: danack@php.net Reported by: domen at jollydeck dot com Summary: Using float bind parameter returns weird error Status: Open Type: Bug Package: PDO MySQL Operating System: Windows, CentOS PHP Version: 7.4.13 Block user comment: N Private report: N New Comment: It might be useful to get the actual statement being executed. Apparently this can be done by setting the a log entry in my.cnf according to: https://stackoverflow.com/a/1813818/778719 Previous Comments: ------------------------------------------------------------------------ [2020-11-30 01:06:35] domen at jollydeck dot com Description: ------------ Following code produces weird error "SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value" although no date or time is used anywhere. This only happens when PDO::ATTR_EMULATE_PREPARES is set to false and bound parameter is float. Table engine does not matter (tested with InnoDB and MyISAM). Statement executes successfully if bind parameter is integer or the value "0.3" is not bound but hard-coded into the query (either as '0.3' or as 0.3). Test script: --------------- <?php $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'test_username', 'test_password'); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->query("CREATE TABLE test (field INT NOT NULL) ENGINE=InnoDB"); $pdo->query("INSERT INTO test (field) VALUES (0)"); $stmt = $pdo->prepare("UPDATE test SET field = 100 * ?"); $stmt->execute(array(0.3)); Expected result: ---------------- Query executes successfully Actual result: -------------- Fatal error: Uncaught PDOException: SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '0.3' in ... ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=80445&edit=1

« previous php.bugs (#230717) next »