PHP και MySQL διαδικασία εισαγωγής δεδομένων από ένα πίνακα σε άλλο

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
mixalsf
Δημοσιεύσεις: 21
Εγγραφή: 11 Απρ 2006 11:24
Τοποθεσία: Kavala

PHP και MySQL διαδικασία εισαγωγής δεδομένων από ένα πίνακα σε άλλο

Δημοσίευση από mixalsf » 25 Μαρ 2011 06:10

Καλημέρα και χρόνια πολλά!
Εδώ και λίγες μέρες προσπαθώ να κάνω μια μεταφορά του site μου σε wordpress. Για το λόγο αυτό έφτιαξα το παρακάτω script ώστε να μετατρέψω τα άρθρα του παλιού site στα αντίστοιχα posts του wordpress.

Αφού γίνουν τα κατάλληλα queries και fetching, μεταφέρω όλα τα δεδομένα σε variables κάνοντας τις κατάλληλες τροποποιήσεις (πχ η ώρα από timestamp να γίνει date, το κύριο μέρος κειμένου που στο παλιό site ήταν σε δυο κομμάτια, να ενωθεί σε ένα κομμάτι, καθώς και το όνομα του συγγραφέα του κειμένου να προκύψει από την ένωση του ονόματος και του επωνύμου που έχω στο παλιό site ξεχωριστά).
Έτσι ο κώδικας έχει ως εξής:
$post_author=$row_authorname['firstname']. " ".$row_authorname['lastname'];
$post_date=date("r",$row_part0['time']);
$post_date_gmt=date("r",$row_part0['time']);
$post_content=htmlspecialchars("<b>". $row_part0['text']. "</b></br>\n" . $row_part1['text'], ENT_QUOTES);
$post_title=$row_part0['title'];
$post_status="publish";
$comment_status="closed";
$ping_status="open";
$post_name=str_replace(" ","_",$post_title);
$post_modified=date("r",$row_part0['time_edit']);
$post_modified_gmt=$post_date_gmt;
$post_parent=0;
$guid=htmlspecialchars("http://localhost/wordpress/?p=". $row_part0['news_id'], ENT_QUOTES);
$menu_order=0;
$post_type="post";
$comment_count=0;
Σαν επόμενο βήμα ακολουθεί το query για την εισαγωγή στην SQL

Κώδικας: Επιλογή όλων

mysql_query&#40;"INSERT INTO `wp_posts` &#40;`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_status`, `comment_status`, `ping_status`, `post_name`, `post_modified`, `post_modified_gmt`, `post_parent`, `guid`, `menu_order`, `post_type`, `comment_count`&#41; 
VALUES
&#40;'&#123;$id&#125;',
'&#123;$post_author&#125;',
'&#123;$post_date&#125;', 
'&#123;$post_date_gmt&#125;', 
'&#123;$post_content&#125;', 
'&#123;$post_title&#125;', 
'&#123;$post_status&#125;', 
'&#123;$comment_status&#125;', 
'&#123;$ping_status&#125;', 
'&#123;$post_name&#125;', 
'&#123;$post_modified&#125;', 
'&#123;$post_modified_gmt&#125;', 
'&#123;$post_parent&#125;', 
'&#123;$guid&#125;', 
'&#123;$menu_order&#125;', 
'&#123;$post_type&#125;', 
'&#123;$comment_count&#125;'"&#41;;
Και όλο αυτό είναι μέσα σε μια for για την επανάληψη

Κώδικας: Επιλογή όλων

for &#40;$id=1; $id<100; $id++&#41; &#123;

//Και εδώ βρίσκονται&#58;
//SQL queries
//Τα παραπάνω script
//Τα free results

&#125;//end of for
Το πρόβλημα μου είναι πως κατά την επανάληψη (που δεν εισάγεται κανένα δεδομένο στη βάση, όταν φτάσει στην εγγραφή 71, μου βγάζει ένα error:
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 '' at line 1
Με την αναζήτηση που έκανα για το παραπάνω, εντόπισα πως ίσως πρόκειται για special characters, εξού και το htmlspecialchars όπου χρειάζεται.
Εν τέλει τα προβλήματα που προκύπτουν είναι δυο:
Ένα γιατί δεν εισάγονται τα δεδομένα (έστω και μέχρι το 71)
Και αν γνωρίζει κανείς να βοηθήσει για το error.

Ευχαριστώ πολύ όποιον έχει την καλοσύνη να βοηθήσει.

mixalsf
Δημοσιεύσεις: 21
Εγγραφή: 11 Απρ 2006 11:24
Τοποθεσία: Kavala

PHP και MySQL διαδικασία εισαγωγής δεδομένων από ένα πίνακα σε άλλο

Δημοσίευση από mixalsf » 25 Μαρ 2011 07:49

Το βρήκα το πρόβλημα και κατάφερα μια πιο μπακαλίστικη λύση που όμως με βολεύει.

Εφόσον θα χρειαστεί να εξάγω τον πίνακα wp_posts και να τον κάνω import στο νέο σέρβερ μελλοντικά, σκέφτηκα να κάνω file write κατευθείαν τον κώδικα sql σε ένα αρχείο.

επίσης το error που μου εβγαζε, συνέβαινε επειδή υπάρχουν και άδειες εγγραφές σε διάφορα κελιά.
Συνεπώς πριν το fetching των queries

Κώδικας: Επιλογή όλων

$part0 = mysql_query&#40;$query_part0, $merge&#41; or die&#40;mysql_error&#40;&#41;&#41;;
διέγραψα το

Κώδικας: Επιλογή όλων

or die&#40;mysql_error&#40;&#41;&#41;
και λειτουργεί κανονικά! Ενα optimizing και ολα θα δουλέψουν ρολόι (ελπίζω). !

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες