PHP Problem mit SQLite-query

  • Themenstarter Themenstarter sw33tlull4by
  • Beginndatum Beginndatum
S

sw33tlull4by

Guest
Hallo!
Ich habe folgendes Problem, ich habe in einem Ordner auf meinem webserver 2 PHP-Skripte und eine SQLite-Datenbank.
PHP-Skript 1 generiert eine HTML-Seite welche mittels Javascript PHP-Skript2 aufruft und es per GET Parametern versorgt.
PHP-Skript2 soll dann die SQLite-Datenbank aktualisieren.
Und genau dort liegt der Fehler.
Selbst wenn ich das Formular mittels meines Browsers selbst anwähle funktioniert es nicht.
In /var/log/httpd/errorlog steht nichts, alles scheint normal zu laufen,alles wird ausgeführt nur es gibt keine Änderungen,sogar die Variable $num wird entwertet,was komisch ist.

Sobald ich aber die query in einer interaktiven PHP-shell eingebe funktioniert es wunderbar.
Das Verzeichniss gehört mir und der Gruppe apache an. alle Nichtbesitzer und Nichtgruppenmitglieder dürfen auf db1.sqlite schreiben,lesen und Programme darauf ausführen.
Selinuxrechte wurden mittels restorecon -r auch gesetzt.
ls -Z gibt für db1.sqlite folgendes aus:
-rwxrwxr--. sw33t apache unconfined_u:object_r:httpd_sys_content_t:s0 db1.sqlite

was ich komisch finde ist das dort nicht steht ....system_u:object_r..... aber da ich auch 2 PHP-skripte habe welche das gleiche attribut haben aber trotzdem ausführbar sind denke ich nicht das das mein Problem ist.

Weiss jemand vielleicht woran das liegt?
PHP:
<?php


    function inserting_vote($param1,$param2){
        
        if($param1<=0 || $param2 == NULL)
            return;
        
        $db = new PDO("sqlite:./db1.sqlite");
    $num = 0;
        foreach($param2 as $row){
            $num = $db->exec("update table1 set counter=counter+1 where param1=".$param1." and param2='".$param2."')");
            print $num."  gemachte änderungen <br>";
            
        }
    }
    inserting_vote($_GET['num'],split("~",$_GET['theparam']));
    print $_GET['num']."<br>";
    print $_GET['theparam']."<br>";
    print_r(split("~",$_GET['theparam']));
    
?>
Mfg

sw33t
 
Zuletzt bearbeitet:
der ganze code wäre ja schonmal hilfreich bzw. hab ich das richtig verstanden:

script 1 zeigt html an dort kann man dann was auswählen dass dann per ajax auf script 2 geschickt wird und dort dann in die DB kommt?

wenn ja:

kommt der ajax request sicher an?
werden die GET parameter korrekt überliefert?
 
Ja werden sie, ist zwar dank der localhostproblematik etwas schwer zu zeigen aber ja,alles im grünen Bereich.
Aber selbst wenn ich das 2.PHP-Skript per URL in meinem Browser ansteuere liegt der Fehler vor, ist also kein Javascript-Problem.
 
wenn dus per url aufrufst das script was kriegst du wenn du die foreach schleife so machst:

PHP:
        foreach($param2 as $row){
            $num = $db->exec("update table1 set counter=counter+1 where param1=".$param1." and param2='".$param2."')");
            echo "update table1 set counter=counter+1 where param1=".$param1." and param2='".$param2."')";
            print $num."  gemachte änderungen <br>";
            
        }

den erwarteten output?
 
Ja ich bekomme die erwartete Ausgabe.
Die Query stimmt.
$param1 ist eine 1 und $param2 eine Zahl welche in Anführungszeichen gesetzt wird.
 
mhm versuch mal den query so auszuführen:

PHP:
$db->exec(query stuff);

print_r($db->errorInfo());
 
Zuletzt bearbeitet:
Ich hab den Fehler gefunden.
Klammernzählen hilft manchmal.
Ich habe eine Klammer geschlossen obwohl ich keine aufgemacht habe.
Vielen dank für die Hilfe.
Echt peinlich, sitzt man 24h vor dem Code und sieht das einfachste nicht.
Mfg

sw33t
 
Zurück
Oben