hey liebe Leute,
nachdem mir mermshaus in einem thread versichert hat, dass das was ich vorhabe nicht SQL Injektion gefaehrdet ist, habe ich damit angefangen.
hier zunaechst der code, denn ich bereits habe:
Die funktion erwartet eine Variable $table, die man braucht um die Tabelle auszuwaehlen.
$rows ist ein array, welches die Spalten enthaelt, in welche etwas eingetragen werden soll.
$values ist ebensfals ein array und enthaelt die daten die eingetragen werden sollen.
$type ist speziel fuer die funktion mysqli_stmt_bind_param(), welche den typen der spalte enthaelt (s fuer string, i fuer integer etc).
bis dahin kein problem.
das problem liegt da, dass man NICHT weiss wie viele werte in $value sind. mittels sizeof() kein problem das herauszufinden.
Jedoch will ich, dass der mysqli_stmt_bind_param() befehl am ende so aussieht:
ich hoffe ihr versteht meine frage :)
mfg
marius
EDIT:
fals es weiterhilft:
Ich habe einen String, der genau die benötigten Parameter liefert. Jedoch ist es ein String und somit unnutz fuer das Problem denke ich mal!
nachdem mir mermshaus in einem thread versichert hat, dass das was ich vorhabe nicht SQL Injektion gefaehrdet ist, habe ich damit angefangen.
hier zunaechst der code, denn ich bereits habe:
Code:
public function insert($table, $rows, $values, $type)
{
$sql = 'INSERT INTO '.$table.' (';
for ($i = 0; $i <= (sizeof($rows)-1); $i++)
{
if (!($i == (sizeof($rows)-1)))
{
$sql .= $rows[$i].', ';
}
else
{
$sql .= $rows[$i];
}
}
$sql .= ') VALUES (';
for ($i = 0; $i < sizeof($rows); $i++)
{
if (!($i == (sizeof($rows)-1)))
{
$sql .= '?, ';
}
else
{
$sql .= '?)';
}
}
for ($i = 0; $i < (sizeof($values)-1); $i++)
{
$
}
if (!($this->mysqli_stmt->prepare($sql)))
{
$this->error[0] = $this->error;
$this->error[1] = $this->errno;
return FALSE;
}
else if (!($this->mysqli_stmt->bind_param($type, )))
{
$this->error[0] = $this->error;
$this->error[1] = $this->errno;
return FALSE;
}
else if (!($this->mysqli_stmt->execute()))
{
$this->error[0] = $this->error;
$this->error[1] = $this->errno;
return FALSE;
}
else
{
if (($this->mysqli_stmt->affected_rows) == -1)
{
return FALSE;
}
else if (($this->mysqli_stmt->affected_rows) == 0)
{
return FALSE;
}
else
{
return TRUE;
}
}
}
$rows ist ein array, welches die Spalten enthaelt, in welche etwas eingetragen werden soll.
$values ist ebensfals ein array und enthaelt die daten die eingetragen werden sollen.
$type ist speziel fuer die funktion mysqli_stmt_bind_param(), welche den typen der spalte enthaelt (s fuer string, i fuer integer etc).
bis dahin kein problem.
das problem liegt da, dass man NICHT weiss wie viele werte in $value sind. mittels sizeof() kein problem das herauszufinden.
Jedoch will ich, dass der mysqli_stmt_bind_param() befehl am ende so aussieht:
Code:
else if (!($this->mysqli_stmt->bind_param($type, $value[0], $value[1], $value[2], $value[3])))
mfg
marius
EDIT:
fals es weiterhilft:
Ich habe einen String, der genau die benötigten Parameter liefert. Jedoch ist es ein String und somit unnutz fuer das Problem denke ich mal!
Zuletzt bearbeitet: