WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   MySQL - Einträge werden nicht übernommen (http://www.wcm.at/forum/showthread.php?t=69264)

pirate man 08.09.2002 19:20

MySQL - Einträge werden nicht übernommen
 
ich hab jetzt für meine site ein neues newsscript und hab ein kleines script gemacht, das die einträge in der mysql-db von der tabelle des alten scripts zu der des neuen übernimmt
aber es kommt ein syntax-error, den ich noch nie gesehen hab

hier der quelltext des files:

PHP-Code:

$server "localhost";
$database "xxx";
$user "xxx";
$password "xxx";
$table1 "news_content";
$table2 "corenews_news";

mysql_connect("$server""$user""$password") or die("Datenbank konnte nicht konnektiert werden!");
mysql_select_db("$database") or die("Fehler beim Öffnen der Datenbank!");

$query mysql_query("SELECT * FROM $table1 ORDER BY EID");
while(
$result mysql_fetch_array($query))
{
    
$EID $result['EID'];
    
$autor $result['autor'];
    
$headline_ger $result['headline_ger'];
    
$headline_eng $result['headline_eng'];
    
$sec2 $result['sec2'];
    
$posting_ger $result['posting_ger'];
    
$posting_eng $result['posting_eng'];
    
    
mysql_query("INSERT INTO $table2 (id, author_id, news_title_ger, news_title_eng, time, icon_id, show_email, news_text_ger, news_text_eng, link, link_text) VALUES ($EID, $autor, $headline_ger, $headline_eng, $sec2, 0, 1, $posting_ger, $posting_eng, 0, 0)");

    echo 
mysql_error();


und hier könnt ihr euch die fehlermeldung ansehen: http://nfs6.daddeltreff.de/convert.php

ich hoffe, ihr könnt mir helfen

_m3 08.09.2002 19:24

LOL
Einfach.
Du musst in den Strings alle Anführungszeichen, etc. escapen.

pirate man 08.09.2002 19:34

du meinst zb die links in den einträgen (<a href="blabla">)?

_m3 08.09.2002 19:41

Jup, aber dafür gibts eh enstprechende PHP-Funktionen.

pirate man 08.09.2002 19:46

ich hab jetzt die zeile
PHP-Code:

mysql_query("INSERT INTO $table2 (id, author_id, news_title_ger, news_title_eng, time, icon_id, show_email, news_text_ger, news_text_eng, link, link_text) VALUES ($EID, $autor, $headline_ger, $headline_eng, $sec2, 0, 1, $posting_ger, $posting_eng, 0, 0)"); 

durch
PHP-Code:

mysql_query("INSERT INTO $table2 (id, author_id, news_title_ger, news_title_eng, time, icon_id, show_email, news_text_ger, news_text_eng, link, link_text) VALUES ('$EID', '$autor', '$headline_ger', '$headline_eng', '$sec2', '0', '1', '$posting_ger', '$posting_eng', '0', '0')"); 

ersetzt

leider hat das mein problem nicht gelöst, jetzt kommt folgendes:
Zitat:

You have an error in your SQL syntax near 't need to commentate. Here you find the newsarchive, the newssearch and the news' at line 1You have an error in your SQL syntax near 't break out the uncomplicated driving fun, my harddisk asphalt will burn in autu' at line 1You have an error in your SQL syntax near 's sure to keep those fans busy for quite some time. Hot Pursuit 2 is scheduled f' at line 1You have an error in your SQL syntax near 't attainable for many hours. The reason was a server loss at our hoster. We hop' at line 1You have an error in your SQL syntax near 't confirmed by Electronic Arts yet because NFS:HP2 will only appear in th' at line 1You have an error in your SQL syntax near 't availabe yesterday again. The reason was a server problem again. Since the lo' at line 1You have an error in your SQL syntax near 's console has a completely different feel, a far greater sense of speed and soli' at line 1You have an error in your SQL syntax near 's driving controls are standard for arcade racers, with the usual accelerate, br' at line 1You have an error in your SQL syntax near 't be available for 1-2 weeks, because our hoster Daddeltreff.de will chan' at line 1

_m3 08.09.2002 19:54

Drück ich mich heute so unklar aus?
Du musst die INHALTE escapen:

PHP-Code:

$headline_ger addslashes($result['headline_ger']);
$headline_eng addslashes($result['headline_eng']);
$sec2 $result['sec2'];
$posting_ger addslashes($result['posting_ger']);
$posting_eng addslashes($result['posting_eng']); 


pirate man 08.09.2002 19:56

sorry
was genau macht addslashes? mit escapen fang ich nix an

_m3 08.09.2002 20:12

Wenn MySQL/PHP auf einen ' stößt, glaubt er, dass der String zu ende ist.
Deswegen muss man den ' escapen (ein \ voranstellen), damit der Parser den ' unmodifiziert in das Datenbankfeld stellt.

Zitat:

AddSlashes

(PHP 3, PHP 4 >= 4.0b1)
AddSlashes -- Stellt bestimmten Zeichen eines Strings einen Backslash "\" (Rückstrich) voran
Beschreibung:

string addslashes (string str)

Gibt einen String (Zeichenkette) zurück, in dem bestimmten Zeichen ein Backslash "\" voran gestellt wurde. Diese Funktion ist z.B. für Datenbankabfragen wichtig. Die behandelten Zeichen sind der einfache und der doppelte Anführungsstrich (' und "), der Rückstrich (\) selbst sowie NUL (das Null-Byte).
http://at.php.net/manual/de/function.addslashes.php


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag