Guten Morgen Felix,
natürlich nicht, die gehören ja zu meiner Klasse, die auf PDO aufbaut. Hier für Dich meine Datenbank-Klasse:
Ah, i see.
Ich danke dir.
Immoment hab ich folgendes für meine Datenbank Verbindung:
//Database Login values
$db_host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "DB";
//Database connection
$db = @new mysqli($db_host, $db_user, $db_pass);
if (!$db->connect_error)
{
// Select database
$select_db = mysqli_select_db($db, $db_name);
// If database not exist
if($select_db === FALSE)
{
// Create database
$create_db = "CREATE DATABASE IF NOT EXISTS $db_name DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci";
if ($db->query($create_db))
{
// Create tables
mysqli_select_db($db, "$db_name");
require_once('functions/php/create_tables_function.php');
}
else
{
die("<pre>".$db->connect_error."</pre>");
// error_log! No Database selected
}
}
else
{
$db->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");
$db->begin_transaction(MYSQLI_TRANS_START_READ_WRITE);
}
}
else
{
//error log! No connection to Database
}
Sprich, wenn die Datenbank nicht nicht existiert dann lege sie an und erstelle alle nötigen Tabellen. bis jetzt sind das etwa 40 die Teilweise direkt mit Daten gefüttert werden.
Wie mach ich das dann mit PDO, einfach nur das SQL-Statement von einem INSERT INTO
-Statement zu einem CREATE TABLE
-Statement ändern und abflug mit der send()
Funktion? Und wie mache ich das mit UPDATE
, DROP TABLE
und DELETE
-Statements? Da diese Statments jaa keine Daten von der Datenbank zurück bekommen einfach die send()
-Funktion, oder?
Außerdem wird eine Transaktion gestartet, damit alle danach kommenden Statements eben zusammen ausgeführt werden bevor ein anderer Client irgendwas mit der DB machen kann.
Grundlegend kann ich eine Transaction für PDO ja mit public bool PDO::beginTransaction ( void )
starten und mit PDO::commit()
respektive PDO::rollBack()
beenden. Aber wie füge ich das dann in die Klasse ein?
Und wie escape ich da richtig?
// in Datenbank schreiben
$db->send(
// SQL
sprintf(
'INSERT INTO %s ('
. 'v2, v3, v4'
. ') VALUES ('
. '\'%s\', \'%s\', %f'
. ')',
:v1,
:v2,
:v3,
:v4,,
// Parameter für SQL-Platzhalter
array(
':v2' => 'string',
':v3' => quote($_POST['v2']), //??
':v4' => microtime(true),
)
));
Umgekehrt, das was ich aus der Datenbank zurückbekommen mit get()
escape ich weiterhin mit htmlspecialchars()
bzw htmlentities()
.
Gruß
Jo