php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.04.2006, 18:38  
Neuer Benutzer
 
Registriert seit: 09.04.2006
Beiträge: 2
Nase
Nase eine Nachricht über ICQ schicken
Standard Problem mit Insert

Hi,

ich habe ein kleines Problem mit dem folgenden Code:

Code:
<?
include "config.php";
$subject = "";
$text = "";
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die(mysql_error());
	mysql_select_db(MYSQL_DATABASE) or die(mysql_error());
    			$sql = "SELECT
				article_title,
				article_text
				FROM
				myfaq_article";
	$result = mysql_query($sql) or die(mysql_error());
	while ($row = mysql_fetch_assoc($result))
	{
		$subject = $row['article_title'];
		$text = $row['article_text'];
		@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die(mysql_error());
		mysql_select_db(MYSQL_DATABASE) or die(mysql_error());
		$q = "INSERT INTO articles
				(subject,text)
				VALUES
				('$subject','$text')";
		mysql_query($q) OR die(mysql_error());
		$subject = "";
		$text = "";
	}

?>
Als Ausgabe erhalte ich die folgende Fehlermeldung:

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 've probably already noticed it's not your average firmware upgrade with all thos' at line 4
Kann mir jemand vielleicht sagen, woran das liegen könnte? Ansich verwende ich den Insert Befehl eigentlich immer genauso und auf dem selben Server und dort funktioniert er auch immer.

Danke & Gruß
Nase
Nase ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.04.2006, 18:43  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Nase,

vielleicht stört sich dein MySQL-Server an dem Quoting. Schreib mal

PHP-Code:
$q "INSERT INTO articles (subject,text) VALUES ('".$subject."','".$text."');"
Es ist zudem unsauber die Variablen direkt in den Text einzubetten. Manche behaupten sogar, dass das die Perfromance belastet, da der PHP-Interpreter innerhalb der Zeichenkette nach aktuell deklarierten Variablen sucht.


Grüße,
dr.e.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 09.04.2006, 18:45  
Gast
 
Beiträge: n/a
Standard

Bitte was sollen diese beiden Zeilen in der while-Schleife:

PHP-Code:
<?php
@mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) or die(mysql_error()); 
mysql_select_db(MYSQL_DATABASE) or die(mysql_error()); 
?>
Lass dir mal $q ausgeben, vielleicht erkennst du dann das Problem.

Gruß
phpfan
 
Alt 09.04.2006, 18:46  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Schau dir doch mal den in $q stehenden SQL-Code an.

Du wirst sehen, dass der Text, den du hinzufügen willst von ' umschlossen
wird, wie du es eben mit VALUES('$subject', '$text') festgelegt hast. Wenn
dieser jetzt aber selbst ' enthält, wird die Eingrenzung beendet. Da das nicht
beabsichtigt ist, entsteht ein SQL-Syntax Fehler.

Beispiel:
Code:
INSERT INTO tabelle SET column = 'You've got mail';
                                 ^---^ String-Eingrenzung, danach Mist
Lösung:
- http://de.php.net/addslashes oder
- http://de.php.net/mysql_real_escape_string
Auch lohnenswert anzuschauen:
- http://de.wikipedia.org/wiki/SQL_Injection
Zergling-new ist offline  
Alt 09.04.2006, 19:01  
Neuer Benutzer
 
Registriert seit: 09.04.2006
Beiträge: 2
Nase
Nase eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von dr.e.
Hallo Nase,

vielleicht stört sich dein MySQL-Server an dem Quoting. Schreib mal

PHP-Code:
$q "INSERT INTO articles (subject,text) VALUES ('".$subject."','".$text."');"
Das habe ich getestet, allerdings bleibt die Fehlermeldung genauso bestehen.

Zitat:
Zitat von Zergling
Schau dir doch mal den in $q stehenden SQL-Code an.

Du wirst sehen, dass der Text, den du hinzufügen willst von ' umschlossen
wird, wie du es eben mit VALUES('$subject', '$text') festgelegt hast. Wenn
dieser jetzt aber selbst ' enthält, wird die Eingrenzung beendet. Da das nicht
beabsichtigt ist, entsteht ein SQL-Syntax Fehler.
Genau richtig vermutet Allerdings verstehe ich nicht so wirklich warum der Fehler genau bei diesem INSERT auftritt, denn ich verwende solche INSERT auch, wenn ich einen neuen Eintrag in der Datenbank anlegen will. Sprich ich hole mir den Text aus dem "FCKeditor" und füge sie einfach so ein. Der Gefahr von SQL Injections bin ich mir sehr wohl bewusst, allerdings kann ich diese vernächlässigen, da es sich um eine Datenbank handelt, welche nur intern verwendet wird.

Gruß
Nase

EDIT:Ok, Problem gelöst, ich habe einfach mit "addslahes" die Eingabe umgewandelt. -->Problem gelöst, danke für die Unterstützung.
Nase ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Mysql Insert Select + Concat Hu5eL Datenbanken 14 10.06.2008 10:39
Self Join / Nested Join ? Ich hab ne Blockade... iangillan Datenbanken 11 06.01.2008 21:37
Verständnisprobleme bei Utf8 > Character Set > Collate erna Datenbanken 4 20.03.2007 14:08
Problem bei Volltextsuche rabatz Datenbanken 1 17.08.2006 14:05
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
Problem mit WHERE bei SELECT-Abfrage Adonis Datenbanken 6 04.05.2006 14:14
Problem mit INSERT und variablen. dattelpalme PHP Tipps 2006 1 10.04.2006 22:12
Insert into problem. PHP Tipps 2005-2 8 05.07.2005 11:00
Insert Script Problem PHP Tipps 2005 11 08.04.2005 20:53
Problem mit Formular übergabe b++ PHP Tipps 2005 6 04.04.2005 14:19
Problem mit MySQL-Tabelle und INSERT El Barto Datenbanken 1 14.02.2005 12:22
INSERT Problem! PHP Tipps 2004 8 06.09.2004 18:22
download und Insert problem! PHP Tipps 2004 4 04.09.2004 16:51
Insert problem stefan-miti PHP Tipps 2004 6 22.08.2004 16:19
[Erledigt] Insert Problem Datenbanken 2 22.08.2004 00:59


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:34 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.