2
0
forked from Wavyzz/dolibarr

Fix: sql syntax error

This commit is contained in:
Laurent Destailleur
2013-04-10 20:45:38 +02:00
parent 70b7cb1fa3
commit 15e86875f3

View File

@@ -252,18 +252,20 @@ function run_sql($sqlfile,$silent=1,$entity='',$usesavepoint=1,$handler='',$oker
// Ajout trace sur requete (eventuellement a commenter si beaucoup de requetes) // Ajout trace sur requete (eventuellement a commenter si beaucoup de requetes)
if (! $silent) print '<tr><td valign="top">'.$langs->trans("Request").' '.($i+1)." sql='".dol_htmlentities($newsql,ENT_NOQUOTES)."'</td></tr>\n"; if (! $silent) print '<tr><td valign="top">'.$langs->trans("Request").' '.($i+1)." sql='".dol_htmlentities($newsql,ENT_NOQUOTES)."'</td></tr>\n";
dol_syslog('Admin.lib::run_sql Request '.($i+1).' sql='.$newsql, LOG_DEBUG); dol_syslog('Admin.lib::run_sql Request '.($i+1).' sql='.$newsql, LOG_DEBUG);
$sqlmodified=0;
// Replace for encrypt data // Replace for encrypt data
if (preg_match_all('/__ENCRYPT\(\'([A-Za-z0-9_\"\[\]]+)\'\)__/i',$newsql,$reg)) if (preg_match_all('/__ENCRYPT\(\'([^\']+)\'\)__/i',$newsql,$reg))
{ {
$num=count($reg[0]); $num=count($reg[0]);
for($i=0;$i<$num;$i++) for($j=0;$j<$num;$j++)
{ {
$from = $reg[0][$i]; $from = $reg[0][$j];
$to = $db->encrypt($reg[1][$i],1); $to = $db->encrypt($reg[1][$j],1);
$newsql = str_replace($from,$to,$newsql); $newsql = str_replace($from,$to,$newsql);
} }
$sqlmodified++;
} }
// Replace for decrypt data // Replace for decrypt data
@@ -271,12 +273,13 @@ function run_sql($sqlfile,$silent=1,$entity='',$usesavepoint=1,$handler='',$oker
{ {
$num=count($reg[0]); $num=count($reg[0]);
for($i=0;$i<$num;$i++) for($j=0;$j<$num;$j++)
{ {
$from = $reg[0][$i]; $from = $reg[0][$j];
$to = $db->decrypt($reg[1][$i]); $to = $db->decrypt($reg[1][$j]);
$newsql = str_replace($from,$to,$newsql); $newsql = str_replace($from,$to,$newsql);
} }
$sqlmodified++;
} }
// Replace __x__ with rowid of insert nb x // Replace __x__ with rowid of insert nb x
@@ -294,9 +297,11 @@ function run_sql($sqlfile,$silent=1,$entity='',$usesavepoint=1,$handler='',$oker
$from='__'.$cursor.'__'; $from='__'.$cursor.'__';
$to=$listofinsertedrowid[$cursor]; $to=$listofinsertedrowid[$cursor];
$newsql=str_replace($from,$to,$newsql); $newsql=str_replace($from,$to,$newsql);
dol_syslog('Admin.lib::run_sql New Request '.($i+1).' (replacing '.$from.' to '.$to.') sql='.$newsql, LOG_DEBUG); $sqlmodified++;
} }
if ($sqlmodified) dol_syslog('Admin.lib::run_sql New Request '.($i+1).' (replacing '.$from.' to '.$to.') sql='.$newsql, LOG_DEBUG);
$result=$db->query($newsql,$usesavepoint); $result=$db->query($newsql,$usesavepoint);
if ($result) if ($result)
{ {