1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-05 06:07:32 +02:00

MySQL PDO: Fix for statements using NULL.

This commit is contained in:
Cameron
2016-03-21 14:22:12 -07:00
parent 4db14510de
commit 634bb73dbf

View File

@@ -183,6 +183,7 @@ class e_db_mysql
try try
{ {
$this->mySQLaccess = new PDO("mysql:host=".$this->mySQLserver."; port=3306", $this->mySQLuser, $this->mySQLpassword, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); $this->mySQLaccess = new PDO("mysql:host=".$this->mySQLserver."; port=3306", $this->mySQLuser, $this->mySQLpassword, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} }
catch(PDOException $ex) catch(PDOException $ex)
{ {
@@ -223,6 +224,10 @@ class e_db_mysql
return 'e2'; return 'e2';
} }
if($this->pdo == true)
{
// $this->mySQLaccess->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}
$this->dbError('dbConnect/SelectDB'); $this->dbError('dbConnect/SelectDB');
// Save the connection resource // Save the connection resource
@@ -1032,9 +1037,19 @@ class e_db_mysql
foreach ($arg['data'] as $fn => $fv) foreach ($arg['data'] as $fn => $fv)
{ {
$new_data .= ($new_data ? ', ' : ''); $new_data .= ($new_data ? ', ' : '');
$new_data .= ($this->pdo == true) ? "`{$fn}`= :". $fn : "`{$fn}`=".$this->_getFieldValue($fn, $fv, $fieldTypes); $ftype = $fieldTypes[$fn];
$bind[$fn] = array('value'=>$this->_getPDOValue($fieldTypes[$fn],$fv), 'type'=> $this->_getPDOType($fieldTypes[$fn]));
$new_data .= ($this->pdo == true && $ftype !='cmd') ? "`{$fn}`= :". $fn : "`{$fn}`=".$this->_getFieldValue($fn, $fv, $fieldTypes);
if($fv == '_NULL_')
{
$ftype = 'null';
}
if($ftype != 'cmd')
{
$bind[$fn] = array('value'=>$this->_getPDOValue($ftype,$fv), 'type'=> $this->_getPDOType($ftype));
}
} }
$arg = $new_data .(isset($arg['WHERE']) ? ' WHERE '. $arg['WHERE'] : ''); $arg = $new_data .(isset($arg['WHERE']) ? ' WHERE '. $arg['WHERE'] : '');
@@ -1177,13 +1192,7 @@ class e_db_mysql
return (int) $fieldValue; return (int) $fieldValue;
break; break;
case 'cmd':
case 'safestr':
case 'str':
case 'string':
case 'escape':
return $fieldValue;
break;
case 'float': case 'float':
// fix - convert localized float numbers // fix - convert localized float numbers
@@ -1195,7 +1204,7 @@ class e_db_mysql
break; break;
case 'null': case 'null':
return $fieldValue; return null;
break; break;
case 'array': case 'array':
@@ -1211,6 +1220,16 @@ class e_db_mysql
return e107::getParser()->toDB($fieldValue); return e107::getParser()->toDB($fieldValue);
break; break;
case 'cmd':
case 'safestr':
case 'str':
case 'string':
case 'escape':
default:
return $fieldValue;
break;
} }
@@ -1231,6 +1250,10 @@ class e_db_mysql
return PDO::PARAM_INT; return PDO::PARAM_INT;
break; break;
case 'null':
return PDO::PARAM_NULL;
break;
case 'cmd': case 'cmd':
case 'safestr': case 'safestr':
case 'str': case 'str':
@@ -1242,14 +1265,11 @@ class e_db_mysql
return PDO::PARAM_STR; return PDO::PARAM_STR;
break; break;
case 'null':
return PDO::PARAM_NULL;
break;
} }
return false;
e107::getMessage()->addDebug("MySQL Missing Field-Type: ".$type);
return PDO::PARAM_STR;
} }