hey leute,
hab mal wieder was gebastelt, aber aus irgendeinem mir nicht bekannten grund will es nciht so wie ich will.
hier erstmal der code:
ich habe ab dem if (!($this->mysqli_stmt->prepare($sql))) die return werte von FALSE durch nummern ersetzt, um zu schauen WO der fehler liegt.
das return in dem prepare teil, da liegt der fehler.
ich habe das sql statement ueberprueft, einfach alles aber trotzdem klappt es nicht.
davor habe ich prepare etc fuer eine andere funktion benutzt, mit den selben datenbank zugangsdaten, da war es kein problem.
ich weiss nicht weiter!
hat jemand eine ahnung oder idee woran es liegen koennte?
fals mehr code gebraucht wird einfach melden.
mfg
mad dog
hab mal wieder was gebastelt, aber aus irgendeinem mir nicht bekannten grund will es nciht so wie ich will.
hier erstmal der code:
Code:
public function update($ignore, $table, $attr, $condition, $values)
{
$sql = 'UPDATE';
if ($ignore === TRUE)
{
$sql .= ' IGNORE';
}
if ((is_string($table) === TRUE) AND (!(empty($table))) AND (!($table === '')))
{
$sql .= ' INTO '.$this->real_escape_string(trim($table));
}
else
{
return FALSE;
}
$sql .= ' SET';
if ((!empty($attr)) AND (is_array($attr)))
{
// Attributsnamen säubern
$escapedKeys = array_map(array($this, 'escape_string'), array_values($attr));
// Attribute einfuegen
$sql .= ' '.implode(', ', $escapedKeys). '';
}
else
{
return FALSE;
}
if ((!empty($condition)) AND (is_array($condition)))
{
// säubern
$escapedCon = array_map(array($this, 'escape_string'), array_values($condition));
// einfuegen
$sql .= ' WHERE '.implode(' AND ', $escapedCon). '';
}
else
{
return FALSE;
}
for ($i = 0; $i < count($values); $i++)
{
if (is_string($values[$i]))
{
$type .= 's';
}
else if (is_double($values[$i]))
{
$type .= 'd';
}
else if (is_int($values[$i]))
{
$type .= 'i';
}
else
{
$type .= 'b';
}
}
$array = array_merge((array)$type, $values);
$tmp = array();
foreach($array as $key => $values)
{
$tmp[$key] = &$array[$key];
}
if (!($this->mysqli_stmt->prepare($sql)))
{
return FALSE;
}
else if (!call_user_func_array(array($this->mysqli_stmt, 'bind_param'), $tmp))
{
return FALSE;
}
else if (!($this->mysqli_stmt->execute()))
{
return FALSE;
}
else
{
if (($this->mysqli_stmt->affected_rows) == -1)
{
return FALSE;
}
else if (($this->mysqli_stmt->affected_rows) == 0)
{
return FALSE;
}
else
{
$this->affected_rows = $this->mysqli_stmt->affected_rows;
return TRUE;
}
}
}
ich habe ab dem if (!($this->mysqli_stmt->prepare($sql))) die return werte von FALSE durch nummern ersetzt, um zu schauen WO der fehler liegt.
das return in dem prepare teil, da liegt der fehler.
ich habe das sql statement ueberprueft, einfach alles aber trotzdem klappt es nicht.
davor habe ich prepare etc fuer eine andere funktion benutzt, mit den selben datenbank zugangsdaten, da war es kein problem.
ich weiss nicht weiter!
hat jemand eine ahnung oder idee woran es liegen koennte?
fals mehr code gebraucht wird einfach melden.
mfg
mad dog