/** * Lancer la requête transmise et faire le tracage si demandé * * @param string $query * Requête à exécuter * @param bool|null $tracer * true pour tracer la requête * @return bool|SQLiteResult */ function executer_requete($query, $tracer = null) { if (is_null($tracer)) { $tracer = $this->tracer; } $err = ""; $t = 0; if ($tracer) { include_spip('public/tracer'); $t = trace_query_start(); } # spip_log("requete: $this->serveur >> $query",'sqlite.'._LOG_DEBUG); // boum ? pourquoi ? if ($this->link) { // memoriser la derniere erreur PHP vue $e = function_exists('error_get_last') ? error_get_last() : ""; // sauver la derniere requete $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['last'] = $query; $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['total_requetes']++; if ($this->sqlite_version == 3) { $r = $this->link->query($query); // sauvegarde de la requete (elle y est deja dans $r->queryString) # $r->spipQueryString = $query; // comptage : oblige de compter le nombre d'entrees retournees // par une requete SELECT // aucune autre solution ne donne le nombre attendu :( ! // particulierement s'il y a des LIMIT dans la requete. if (strtoupper(substr(ltrim($query), 0, 6)) == 'SELECT') { if ($r) { // noter le link et la query pour faire le comptage *si* on en a besoin $r->spipSqliteRowCount = array($this->link, $query); } elseif ($r instanceof PDOStatement) { $r->spipSqliteRowCount = 0; } } } else { $r = sqlite_query($this->link, $query); } // loger les warnings/erreurs eventuels de sqlite remontant dans PHP if ($err = function_exists('error_get_last') ? error_get_last() : "" and $err != $e) { $err = strip_tags($err['message']) . " in " . $err['file'] . " line " . $err['line']; spip_log("{$err} - " . $query, 'sqlite.' . _LOG_ERREUR); } else { $err = ""; } } else { $r = false; } if (spip_sqlite_errno($this->serveur)) { $err .= spip_sqlite_error($query, $this->serveur); } return $t ? trace_query_end($query, $t, $r, $err, $this->serveur) : $r; }
function executer_requete(){ $err = ""; if ($this->tracer) { include_spip('public/tracer'); $t = trace_query_start(); } else $t = 0 ; # spip_log("requete: $this->serveur >> $this->query",'query'); // boum ? pourquoi ? if ($this->link){ // memoriser la derniere erreur PHP vue $e = error_get_last(); // sauver la derniere requete $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['last'] = $this->query; if ($this->sqlite_version == 3) { $r = $this->link->query($this->query); // sauvegarde de la requete (elle y est deja dans $r->queryString) # $r->spipQueryString = $this->query; // comptage : oblige de compter le nombre d'entrees retournees // par une requete SELECT // aucune autre solution ne donne le nombre attendu :( ! // particulierement s'il y a des LIMIT dans la requete. if (strtoupper(substr(ltrim($this->query),0,6)) == 'SELECT'){ if ($r) { $l = $this->link->query($this->query); $r->spipSqliteRowCount = count($l->fetchAll()); unset($l); } elseif (is_a($r, 'PDOStatement')) { $r->spipSqliteRowCount = 0; } } } else { $r = sqlite_query($this->link, $this->query); } // loger les warnings/erreurs eventuels de sqlite remontant dans PHP if ($err = error_get_last() AND $err!=$e) { $err = strip_tags($err['message'])." in ".$err['file']." line ".$err['line']; spip_log("$err - ".$this->query, 'sqlite'); } else $err=""; } else { $r = false; } if (spip_sqlite_errno($serveur)) $err .= spip_sqlite_error($this->query, $serveur); return $t ? trace_query_end($this->query, $t, $r, $err, $serveur) : $r; }