• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[PHP] - MySQL Error

HTML 4 YOU

New member
Hey Leute!

Habe mal eine Frage, und zwar funktioniert eine MySQL Abfrage nicht, ich bekomme folgenden Fehler:

Code:
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 [b][I]'[/I][/b]'Projekte' WHERE 'name' = 'asdfasdfafsdfasd'[b][I]'[/I][/b] at line 1

Hier ist meine Abfrage:

PHP:
$result = mysql_query(sprintf("SELECT name FROM 'Projekte' WHERE 'name' = '%s'", $name)) or die(mysql_error());

Dabei versteh ich gar nicht, was daran falsch sein sollte :confused: Andere Abfragen funktionieren und ohne sprintf() funktioniert es auch nicht :confused:

Ich steh im Moment echt auf dem Schlauch, wäre super, wenn mir ihr mir helfen könntet, da ich selber grad net weiter komme!
 
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 ''Projekte' WHERE 'name' = 'asdfasdfafsdfasd'' at line 1
Hast Du denn eine Tabelle, die den Namen 'Projekte' trägt (um es gleich dazu zu sagen, ich gehe davon aus, dass Du eine hast, die Projekte heißt)?
Die nächste Frage wäre dann, ob diese Tabelle eine Spalte mit dem Namen 'name' hat.
 
Auch wenn er eine Tabelle mit Namen 'Projekte' hat ist das invalide Syntax - das müsste dann trotzdem `'Projekte'` heißen.
 
Tabellen- und Feldnamen gehören nicht in Anführungszeichen ('), der SQL quoting character dafür ist der backtick (`)
 
Danke funktioniert alles. Kommt wahrscheinlich davon, wenn man zu lange nichts mehr mit MySQL gemacht hat, sondern C/C++ gebüffelt hat^^
 
@HTML 4 YOU:
Ich schreib mir die Anfrage in eine extra Variable, die ich mir testweise z.B. mit Echo ausgeben lasse. Ist hilfreich wenn die Anfrage aus mehreren Teilen zusammengebaut wird. So sehe ich schneller was falsch ist.
PHP:
$sql = "Select ...";
echo "SQL:".$sql."<br>";
$result = mysql_query($sql);
Wenn es funktioniert wird echo auskommentiert.
 
Danke für den Tipp ;)

Habe direkt nocheine Frage, undzwar habe ich eine MySQL-Abfrage, die dann alle Werte ausgibt, aber leider wird das erste Ergebnis nie ausgegeben :eek:bfused:, dabei bin ich mir eig. diesmal zu 90% sicher, dass ich alles richtig mache. Fehler gibt es keine, die Abfrage ist:

PHP:
$projekte = mysql_query('SELECT * FROM Projekte WHERE aktiv = "1" ORDER BY id DESC') or die(mysql_error());

if(mysql_fetch_object($projekte)) {

    do {
        $row         = mysql_fetch_object($projekte);
        $projektlink = substr(preg_replace(array('/\s+/', '/^\-/', '/ö/', '/ä/', '/ü/', '/[^a-zA-Z0-9]/'), array('-', '', 'oe', 'ae', 'ue', ''), preg_replace(array('/\s+\s+/', '/^\s+/'), array(' ', ''), $row->name)), 0, 30);
        $datum       = date('d.m.Y H:i', $row->datum);

        echo '
                <div align="center">
                    <table border="0" cellspacing="0" cellpadding="5" width="600px">
                        <tr>
                            <td style="padding: 5px;">
                                <b>Projekt <a href="/projekte/'.$projektlink.'/index/" title="Zum Projekt">'.$row->name.'</a>, erstellt am '.$datum.'</b>
                            </td>
                        </tr>

                        <tr>
                            <td style="padding: 5px;">
                                '.$row->description.'<br /><br /><a href="/projekte/'.$projektlink.'/index/" title="Zum Projekt">Zum Projekt</a>
                            </td>
                        </tr>
                    </table>
                </div><br />';
    } while(mysql_fetch_object($projekte));

} else
    echo '<p>Es sind noch keine Projekte erstellt worden, wollen Sie nicht der/die erste sein?<br /><a href="/projekt_erstellen/">Projekt erstellen</p>';

Wenn kein Projekt erstellt wurde, dann kommt auch die entsprechende Ausgabe heraus, aber falls nur eins erstell wurde, kommt folgendes heraus:

HTML:
<h3>Bisherige Projekte (1):</h2> 
                <div align="center"> 
                    <table border="0" cellspacing="0" cellpadding="5" width="600px"> 
                        <tr> 
                            <td style="padding: 5px;"> 
                                <b>Projekt <a href="/projekte//index/" title="Zum Projekt"></a>, erstellt am 01.01.1970 01:00</b> 
                            </td> 
                        </tr> 
    
                        <tr> 
                            <td style="padding: 5px;"> 
                                <br /><br /><a href="/projekte//index/" title="Zum Projekt">Zum Projekt</a> 
                            </td> 
                        </tr> 
                    </table> 
                </div><br />            
        </div>

Und wenn mehr als 2 Projekte erstellt wurden, wird das erste Ergebnis komplett ausgelassen. Wenn ich die Ergebnisse zähle, kommt aber immer die richtige Anzahl heraus..

Weiß da jemand eine Lösung?
 
Wenn du mysql_fetch_object aufrufst wird immer die nächste Reihe genommen. Weil du die Funktion im while-Aufruf und in der Schleife aufrufst kommt immer nur jede 2. Reihe an.
 
Jo, logisch. Habe es so abgeändert und funktioniert jetzt auch:

PHP:
$projekte = mysql_query('SELECT * FROM Projekte WHERE aktiv = "1" ORDER BY id DESC') or die(mysql_error());

if(mysql_num_rows($projekte) < 1)
    echo '<p>Es sind noch keine Projekte erstellt worden, wollen Sie nicht der/die erste sein?<br /><a href="/projekt_erstellen/">Projekt erstellen</p>';

else {

    while($row = mysql_fetch_object($projekte)) {

        $projektlink = substr(preg_replace(array('/\s+/', '/^\-/', '/ö/', '/ä/', '/ü/', '/[^a-zA-Z0-9]/'), array('-', '', 'oe', 'ae', 'ue', ''), preg_replace(array('/\s+\s+/', '/^\s+/'), array(' ', ''), $row->name)), 0, 30);
        $datum       = date('d.m.Y H:i', $row->datum);

        echo '
                <div align="center">
                    <table border="0" cellspacing="0" cellpadding="5" width="600px">
                        <tr>
                            <td style="padding: 5px;">
                                <b>Projekt <a href="/projekte/'.$projektlink.'/index/" title="Zum Projekt">'.$row->name.'</a>, erstellt am '.$datum.'</b>
                            </td>
                        </tr>

                        <tr>
                            <td style="padding: 5px;">
                                '.$row->description.'<br /><br /><a href="/projekte/'.$projektlink.'/index/" title="Zum Projekt">Zum Projekt</a>
                            </td>
                        </tr>
                    </table>
                </div><br />';

    }

}

Danke nochmal ;) Was MySQL angeht bin schon echt ein Nerd xD
 
Zurück
Oben