Fehler in php skript

Gast #5914767
Lesenswert?

Hallo,

ich habe in meinem php skript einen Fehler aber finde ihn nicht...

hier das Skript
1
function check_recordExists($string_table, &$stringarray_rowvalue) {
2

3
 $string_where = "";
4
        
5

6
  foreach ($stringarray_rowvalue as $nr => $rowvalue)
7
  {
8
    
9
if (strlen($string_where) > 0)
10
     {
11
       $string_where = + 'AND' + $rowvalue["row"] + "=" + $rowvalue["value"];
12
  }
13
    else
14
{
15

16
 $string_where = $rowvalue["row"] + "=" + $rowvalue["value"];
17
echo $string_where;
18
}
19

20

21
$string_table="tet";
22
$stringarray_rowvalue[0][row]   = "Axel";
23
$string_rowvalue[0][value]  = "Pratzner";
24
echo check_recordExists($string_table,$string_rowvalue);

ausgabe ist
1
0

wo ist der Fehler??
#5914980
Lesenswert?

Der Fehler ist schonmal das der Code unvollständig ist.
Es fehlen auf jeden Fall die schließenden Klammern für das foreach und 
für die Funktion.

Ansonsten gibst du keinen Wert zurück.
Wenn deine Funktion keinen Wert zurück gibt, ist der Wert null bzw. als 
Ausgabe dann eben 0 - das ist für PHP mehr oder weniger das gleiche.
Gast #5915135
Lesenswert?

Sven C. schrieb:
> Wenn deine Funktion keinen Wert zurück gibt, ist der Wert null bzw. als
> Ausgabe dann eben 0

Nö, "echo NULL;" ergibt keine Ausgabe. Aber strings werden mit . und 
nicht mit + verknüpft. "12" + "34" ergibt nicht "1234", sondern 46. "12" 
. "34" gäbe "1234". Und "keine 123 nummer" + "keine 123 nummer" ergibt 
nunmal 0. Wenn du Warnungen einschaltest, bekommst du da auch eine.

Aber wie hier das SQL Statement zusammengesetzt werden soll, ist grob 
fahrlässig. Schau dir mal prepared statements an, oder stelle zumindest 
anderweitig sicher, dass deine SQL Statements richtig escaped sind.
#5915327
Lesenswert?

Mea culpa.

Hab's gerade ausprobiert, stimmt null gibt keine Ausgabe.
Der falsche Operator ist mir im Halbschlaf gar nicht bewusst geworden.

Ob der Code allerdings für SQL Injections anfällig ist, ist doch stark 
davon abhängig woher die Variablen kommen und wie die Funktion genutzt 
wird.

Wenn der Code keinerlei Nutzer- bzw. Formulareingaben bearbeitet, 
sondern rein intern Daten verarbeitet, dann besteht auch wenig Chance 
auf eine SQL-Injection.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren