rennwolle17
Grünschnabel
Hallo,
vielleicht hat jemand von euch eine Idee, ich habe nun folgendes lustiges Ereignis - sobald ich ein INSERT INTO ausführe, wird dieses 2x in die Tabelle eingetragen. Ich hab mir da nun auch schon ein Testscript gebaut was ohne jeglichen Schnickschnack daher kommt.
Das ist die vereinfachte DB Klasse
und das das Testscript das die Klasse verwendet
Das ganze habe ich auch schon mit einer anderen Datenbank Klasse getestet, da tritt genau das selbe Problem auf.
https://medoo.in/
Das einzige was ich mir vorstellen könnte, ist das irgend etwas falsch am DB Server konfiguriert ist - aber ich wüsste nicht was - da ich auch nichts geändert habe.
Neugestartet habe ich ihn schon.
Besten Dank und bei weiteren Fragen, fragen
vielleicht hat jemand von euch eine Idee, ich habe nun folgendes lustiges Ereignis - sobald ich ein INSERT INTO ausführe, wird dieses 2x in die Tabelle eingetragen. Ich hab mir da nun auch schon ein Testscript gebaut was ohne jeglichen Schnickschnack daher kommt.
Das ist die vereinfachte DB Klasse
PHP:
<?php
class Database {
/**
* @param string $host,
* @param string $username,
* @param string $password,
* @param string $database,
* @param mixed $result
*/
private $sHost = "",
$sUsername = "",
$sPassword = "",
$sDatabase = "",
$mResult = "";
/**
* @param object $pdo -> static because otherwhise with each page load
* there will be multiple connections
*/
private static $oPdo = false;
/**
* @param string $host,
* @return void
*/
public function setHost( $sHost ) {
$this->sHost = $sHost;
}
/**
* @param string $username,
* @return void
*/
public function setUsername( $sUsername ) {
$this->sUsername = $sUsername;
}
/**
* @param string $password,
* @return void
*/
public function setPassword( $sPassword ) {
$this->sPassword = $sPassword;
}
/**
* @param string $database,
* @return void
*/
public function setDatabase($sDatabase) {
$this->sDatabase = $sDatabase;
}
/**
* @return void
*/
public function getConnection() {
if( !self::$oPdo ) {
try {
self::$oPdo = new PDO('mysql:host='.$this->sHost.';dbname='.$this->sDatabase, $this->sUsername, $this->sPassword, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
self::$oPdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
defined('CONFIG_DEBUG') && CONFIG_DEBUG == false
? exit('Database connection failed.')
: exit('Database connection error: '.$e->getMessage().'.');
}
}
}
/**
* @param string $qry,
* @param array $args -> can be empty when not using WHERE,
* @return mixed $result/exception
*/
public function query($sQry, $aArgs = array() ) {
try {
$this->mResult = $stmt = self::$oPdo->prepare($sQry);
return $stmt->execute($aArgs);
}
catch(PDOException $e) {
defined('CONFIG_DEBUG') && CONFIG_DEBUG == true
? exit('Query failed: '.$e->getMessage().'.')
: exit('Query failed.');
}
}
/**
* @return mixed $rows
*/
public function fetchAll() {
return $this->mResult->fetchAll(PDO::FETCH_ASSOC);
}
/**
* @return mixed $rows
*/
public function fetch() {
return $this->mResult->fetch(PDO::FETCH_ASSOC);
}
/**
* @return int $rows
*/
public function rowCountSelect() {
return count($this->mResult);
}
public function rowCount() {
return $this->mResult->rowCount();
}
public function lastinsertId() {
return self::$oPdo->lastInsertId();
}
}
und das das Testscript das die Klasse verwendet
PHP:
<?php
include("includes/classes/Database.class.php");
///////////////////////////////////
// Datenbank Verbindung aufbauen
$oDatabase = new Database();
$oDatabase->setHost('localhost');
$oDatabase->setUsername('user');
$oDatabase->setPassword('pass');
$oDatabase->setDatabase('database');
$oDatabase->getConnection();
$oDatabase->query("INSERT INTO co_taxonomy_terms (term_de_name, term_de_slug) VALUES ('Test 123', 'test-123')");
Das ganze habe ich auch schon mit einer anderen Datenbank Klasse getestet, da tritt genau das selbe Problem auf.
https://medoo.in/
Das einzige was ich mir vorstellen könnte, ist das irgend etwas falsch am DB Server konfiguriert ist - aber ich wüsste nicht was - da ich auch nichts geändert habe.
Neugestartet habe ich ihn schon.
Besten Dank und bei weiteren Fragen, fragen
