mirror of
https://github.com/PostgreSQL-For-Wordpress/postgresql-for-wordpress.git
synced 2025-07-30 01:37:13 +02:00
Reworked wpsql_insert_id() for better report of errors
git-svn-id: https://plugins.svn.wordpress.org/postgresql-for-wordpress/trunk@546724 b8457f37-d9ea-0310-8a92-e5e31aec5664
This commit is contained in:
@ -144,26 +144,41 @@
|
||||
return $GLOBALS['pg4wp_result'];
|
||||
}
|
||||
|
||||
function wpsql_insert_id($table)
|
||||
function wpsql_insert_id($lnk = NULL)
|
||||
{
|
||||
global $wpdb;
|
||||
$ins_field = $GLOBALS['pg4wp_ins_field'];
|
||||
$table = $GLOBALS['pg4wp_ins_table'];
|
||||
|
||||
$tbls = split("\n", $GLOBALS['pg4wp_ins_table']); // Workaround for bad tablename
|
||||
$t = $tbls[0] . '_seq';
|
||||
$seq = $table . '_seq';
|
||||
|
||||
if( in_array( $t, array( '_seq', $wpdb->prefix.'term_relationships_seq')))
|
||||
return 0;
|
||||
|
||||
if( $ins_field == '"cat_ID"' || $ins_field == 'rel_id' || $ins_field == 'term_id')
|
||||
$sql = "SELECT MAX($ins_field) FROM ".$tbls[0];
|
||||
// Table 'term_relationships' doesn't have a sequence
|
||||
if( $table == $wpdb->term_relationships || 'post_author' == $ins_field)
|
||||
{
|
||||
$sql = 'NO QUERY';
|
||||
$data = 0;
|
||||
}
|
||||
else
|
||||
$sql = "SELECT CURRVAL('$t')";
|
||||
|
||||
$res = pg_query($sql);
|
||||
$data = pg_fetch_result($res, 0, 0);
|
||||
{
|
||||
$sql = "SELECT CURRVAL('$seq')";
|
||||
|
||||
$res = pg_query($sql);
|
||||
if( false !== $res)
|
||||
$data = pg_fetch_result($res, 0, 0);
|
||||
elseif( PG4WP_DEBUG || PG4WP_ERROR_LOG)
|
||||
{
|
||||
if( PG4WP_DEBUG)
|
||||
$lastq = $GLOBALS['pg4wp_last_insert'];
|
||||
else
|
||||
$lastq = 'UNKNOWN';
|
||||
$log = '['.microtime(true)."] wpsql_insert_id() was called with '$table' and '$ins_field'".
|
||||
" and generated an error. The latest INSERT query was :\n'$lastq'\n";
|
||||
error_log( $log, 3, PG4WP_LOG.'pg4wp_errors.log');
|
||||
}
|
||||
}
|
||||
if( PG4WP_DEBUG && $sql)
|
||||
error_log( '['.microtime(true)."] Getting inserted ID for '$t' : $sql => $data\n", 3, PG4WP_LOG.'pg4wp_insertid.log');
|
||||
error_log( '['.microtime(true)."] Getting inserted ID for '$table' ('$ins_field') : $sql => $data\n", 3, PG4WP_LOG.'pg4wp_insertid.log');
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
@ -423,6 +438,9 @@
|
||||
$sql = str_replace( 'IN ( \'\' )', 'IN (NULL)', $sql);
|
||||
$sql = str_replace( 'IN ()', 'IN (NULL)', $sql);
|
||||
|
||||
// Put back the end of the query if it was separated
|
||||
$sql .= $end;
|
||||
|
||||
// For insert ID catching
|
||||
if( $logto == 'INSERT')
|
||||
{
|
||||
@ -436,11 +454,10 @@
|
||||
if(! $GLOBALS['pg4wp_ins_field'])
|
||||
$GLOBALS['pg4wp_ins_field'] = trim($match_list[4],' () ');
|
||||
}
|
||||
if( PG4WP_DEBUG)
|
||||
$GLOBALS['pg4wp_last_insert'] = $sql;
|
||||
}
|
||||
|
||||
// Put back the end of the query if it was separated
|
||||
$sql .= $end;
|
||||
|
||||
// Correct quoting for PostgreSQL 9.1+ compatibility
|
||||
$sql = str_replace( "\\'", "''", $sql);
|
||||
$sql = str_replace( '\"', '"', $sql);
|
||||
|
Reference in New Issue
Block a user