MySQL Insert

Hallo,

ich bin grade dabei eine kleinere PHP Seite zu schreiben und bekomme leider bei einem meiner MySQL Inserts immer folgende Fehlermeldung:
Code:
Error: INSERT INTO Users(account, char, char_name, raid, state, rolle,  wunschrolle) VALUES('1', '1', 'Shogg', '22', '1', '1', '0') 
You have  an error in your SQL syntax; check the manual that corresponds to your  MySQL server version for the right syntax to use near 'char, char_name,  raid, state, rolle, wunschrolle) VALUES('1', '1', 'Shogg', '22'' at line  1

Kann mir irgendjemand sagen, wo mein Fehler liegt?
 
char ist ein reserviertes Wort in MySQL. Entweder du änderst deinen Spaltennamen oder du verwendest Backticks in deinem Statement:

Code:
INSERT INTO foo (`char`) VALUES (1)

// edit: Reserved Keywords (MySQL Manual)
 
Ist es irgendwie möglich aus einer mithilfe von "include();" eingebundenen Datei auf die Variablen etc. der aufrufenden Datei zuzugreifen?

In der ersten Datei habe ich u.A. eine Datenbankverbindung etabliert, Seiteneigenschaften eingebunden etc.
Diese ruft dann, je nachdem welche Seite per GET gefordert wird, eine andere PHP Datei an, um die Seite mit entsprechendem Inhalt zu füllen.

Diese Seitendateien müssten dann aber Zugriff auf alle Variablen, Funktionen und die Datenbankverbindung der ersten Datei haben...

Ich hoffe man versteht mein Problem :D
 
Also, wenn ich dich richtig verstehe, dann sieht deine Situation folgendermassen aus: Eine Datei inkludiert eine andere, wobei du in der inkludierten Datei auf Variabeln der inkludierenden Datei zugreifen möchtest.

Sofern das zutrifft, frage ich mich allerdings: What have you tried?

Denn dies hier ist problemlos möglich:

PHP:
<?php

// one.php

$a = 1;
$b = "string";
$c = new DateTime();

include_once('two.php');

PHP:
<?php

// two.php

var_dump($a, $b, $c);

Code:
⎈ ⇢ php one.php 
int(1)
string(6) "string"
class DateTime#1 (3) {
  public $date =>
  string(19) "2013-05-04 10:08:38"
  public $timezone_type =>
  int(3)
  public $timezone =>
  string(13) "Europe/Zurich"
}

Überdies ist es auch möglich Daten von der inkludierten Datei in der inkludierenden Datei zu verarbeiten, siehe ua. hier:

PHP:
<?php

// one.php

list($a, $b, $c) = include_once('two.php');

var_dump($a, $b, $c);

PHP:
<?php

// two.php

$a = 1;
$b = "string";
$c = new DateTime();

return array($a, $b, $c);

Soviel zu den Variabeln. Einmal inkludierte Funktionen und Klassen werden automatisch in den derzeitigen Scope aufgenommen, das bedeutet, dass du sie dann auch gleich verwenden kannst.
 
Zuletzt bearbeitet:
Nächstes Problem:
Ich habe mir eine Form geschreiben:
HTML:
<form action=\"index.php?ctn=login\" method=\"post\">
                    Username:  <input type=\"text\" name=\"username\" size=\"20\" maxlength=\"32\" />  Passwort:    <input type=\"password\" name=\"password\" size=\"20\" maxlength=\"32\" />  <input type=\"submit\" value=\"Login\" />
                </form>

Dieses ruft als nächstes index.php auf, welche die login.php inkludiert und im Contentbereich die funktion "print_site()" aufruft...

PHP:
<?php
    //Session starten
    session_start();
    
    //Includes
    
    
    //Variablen
    $site_title = "Login";
    $username = $_POST["username"];
    $password = md5($_POST["password"]);
    
    $success;
    $locked;
?>

<?php
    function print_site()
    {
        $abfrage = "SELECT * FROM accounts WHERE name = '".$username."'";
        $ergebnis = mysql_query($abfrage);
        while($row = mysql_fetch_object($ergebnis))
        {
            if ($row->name == $username)
            {
                if ($row->passwort == $password)
                {
                    if ($row->locked == 0)
                    {
                        $_SESSION['id'] = $row->id;
                        $_SESSION['name'] = $row->name;

                        $success = 1;
                    }
                    else
                    {
                        $locked = 1;
                        $success = 0;
                    }
                }
            }
        }
        
        if ($success == 1)
        {
            echo "
            <script type=\"text/javascript\">
                function Weiterleitung()
                {
                    location.href = 'index.php?ctn=profil&ct=".$_SESSION['id']."';
                }
                
                windows.setTimeout(\"Weiterleitung()\", 3000);
            </script>
            
            <center>Sie werden in kürze automatisch auf ihr Profil weitergeleitet.<br>Sollte dies nicht geschehen klicken Sie <a href=\"index.php?ctn=profil&ct=".$_SESSION['id']."\">bitte hier</a></center>
            ";
        }
        else
        {
            echo "Login fehlgeschlagen<br>";
            echo $abfrage;
        }
    }
?>

Aus irgendeinem Grund lautet meine abfrage aber immer:
Code:
SELECT * FROM accounts WHERE name = ''
 
Zuletzt bearbeitet:
$username ist in der funktion nicht verfügbar..... entweder du machst es expliziet global --> dazu hier schauen: PHP: Geltungsbereich von Variablen - Manual oder du gibts beim funktionsaufruf $username mit in die funktion

PHP:
//schnell ungetestet
print_site($username);

function print_site($user)
{
$abfrage = "SELECT * FROM accounts WHERE name = '".$user."'";

}
ich glaube aber kaum das deine sql abfrage so sicher ist einfach die variabel übernehmen die der user reingibt :rolleyes::rolleyes:
 
Zurück
Oben