Προς το περιεχόμενο

PHP - MySQL πρόβλημα


mtzoumas

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

 

Έχω φτιάχει μία φόρμα την οποία θέλω να αποθηκεύσω σε 4 διαφορετικούς πίνακες (artists, month_year, track_names και video_links). Το μόνο που μπορώ να αποθηκεύσω είναι ο μήνας και το έτος στον αντίστοιχο πίνακα. Όλοι οι πίνακες έχουν 1 προτεύον πεδίο. Ο artists, ο track_names και ο video_links έχουν 11 πεδία ενώ ο month_year έχει 3. Που μπορεί να ωφειλέται το πρόβλημα της αποθήκευσης;

 

Ο κώδικας της php μου:

><?php
$year_top10 = $_POST['year_top10'];
$month_top10 = $_POST['month_top10'];
for ($i = 1; $i <= 10; $i++) 
{
	$artists[$i-1] = serialize($_POST['artist'.$i]);
	$tracks[$i-1] = serialize($_POST['track'.$i]);
	$videos[$i-1] = serialize($_POST['video'.$i]);
}
if(isset($month_top10))
{
	$con = mysql_connect($servername,$dbusername_top10,$dbpassword_top10);
	if (!$con)
	{
		die('Could not connect: ' . mysql_error());
	}
	mysql_select_db($dbname_top10, $con);
		

	$sql_art = "INSERT INTO $table_artists (Artist1, Artist2, Artist3, Artist4, Artist5, Artist6, Artist7, Artist8, Artist9, Artist10) VALUES ($artists[0], $artists[1], $artists[2], $artists[3], $artists[4], $artists[5], $artists[6], $artists[7], $artists[8], $artists[9])";
	$result_art = mysql_query($sql_art,$con);
	
	$sql_tra = "INSERT INTO $table_tracks (Track1, Track2, Track3, Track4, Track5, Track6, Track7, Track8, Track9, Track10) VALUES ($tracks[0], $tracks[1], $tracks[2], $tracks[3], $tracks[4], $tracks[5], $tracks[6], $tracks[7], $tracks[8], $tracks[9])";
	$result_tra = mysql_query($sql_tra,$con);
	
	$sql_vi = "INSERT INTO $table_videos(Video1, Video2, Video3, Video4, Video5, Video6, Video7, Video8, Video9, Video10) VALUES ($videos[0], $videos[1], $videos[2], $videos[3], $videos[4], $videos[5], $videos[6], $videos[7], $videos[8], $videos[9])";
	$result_vi = mysql_query($sql_vi,$con);
				
	mysql_close($con);
	
	echo "<b>Epityxeis kataxorisi</b><br />";
}
?>

Δημοσ.

Αν οι μεταβλητές artists, track και video είναι char (και αντίστοιχα και οι στήλες στον πίνακα) θα πρέπει να το κάνεις έτσι:

>$sql_art = "INSERT INTO $table_artists (Artist1, Artist2, Artist3, Artist4, Artist5, Artist6, Artist7, Artist8, Artist9, Artist10) VALUES ('$artists[0]', '$artists[1]', '$artists[2]', '$artists[3]', '$artists[4]', '$artists[5]', '$artists[6]', '$artists[7]', '$artists[8]', '$artists[9]')"; 

Δημοσ.

Τα πεδία των πινάκων είναι char(100) και οι μεταβλητές είναι επίσης κείμενο (πχ artists[0]="sakis"). Τα πεδία του πίνακα month_year είναι tinytext αλλά τους βάζω αριθμό και λειτουργεί.

Δημοσ.

Οι αριθμοί δεν έχουν πρόβλημα σε πεδία τύπου char, όταν όμως βάζεις κάποιο string πρέπει να χρησιμοποιήσεις quotes (") ή single quote ('). Δοκίμασες όπως σου είπα; Επίσης, γιατί χρησιμοποιείς την serialize; Σου δίνει τα αποτελέσματα που θες; Κάνε αυτή την αλλαγή στον κώδικά σου και γράψε το αποτέλεσμα:

>for ($i = 1; $i <= 10; $i++) 
{
$artists[$i-1] = serialize($_POST['artist'.$i]);echo "artist".($i-1).": ".$artists[$i-1]."-";
$tracks[$i-1] = serialize($_POST['track'.$i]);echo "track".($i-1).": ".$tracks[$i-1]."-";
$videos[$i-1] = serialize($_POST['video'.$i]);echo "video".($i-1).": ".$videos[$i-1]."<br>";
} 

Δημοσ.

ευχαριστώ φίλε για τη βοήθεια σου αλλά ακόμα έχω το ίδιο πρόβλημα. Έχω κάνει ότι μου έχεις πει.

 

Το αποτέλεσμα της μιας echo είναι:

artist0: s:15:"Yolanda Be Cool";-

artist1: s:4:"Dido";-

artist2: s:16:"Denis the Menace";-

artist3: s:13:"Dennis Ferrer";-

artist4: s:11:"Moonrunners";-

artist5: s:5:"Nicko";-

artist6: s:9:"Eddy Wata";-

artist7: s:12:"Steve Forest";-

artist8: s:17:"Kings of tomorrow";-

artist9: s:11:"DCA Project";-

 

---------- Προσθήκη στις 01:57 ---------- Προηγούμενο μήνυμα στις 01:50 ----------

 

Όταν έβγαλα την serialize() τότε πήρα τα παρακάτω αλλά και πάλι το πρόβλημα δεν λύθηκε.

 

>$artists[$i-1] = $_POST['artist'.$i]; echo "artist".($i-1).": ".$artists[$i-1]."<br>";

 

artist0: Yolanda Be Cool

artist1: Dido

artist2: Denis the Menace

artist3: Dennis Ferrer

artist4: Moonrunners

artist5: Nicko

artist6: Eddy Wata

artist7: Steve Forest

artist8: Kings of tomorrow

artist9: DCA Project

Δημοσ.

Εάν το δώσεις από phpmyadmin, σου βγάζει κάποιο σφάλμα; Και επίσης, δε βλέπω πουθενά να έχεις δηλώσει τη μεταβλητή $table_artists

Δοκίμασε και αυτό:

>$sql_art = "INSERT INTO $table_artists (Artist1, Artist2, Artist3, Artist4, Artist5, Artist6, Artist7, Artist8, Artist9, Artist10) VALUES ($artists[0], $artists[1], $artists[2], $artists[3], $artists[4], $artists[5], $artists[6], $artists[7], $artists[8], $artists[9])";
echo $sql_art;

και δώσε πάλι το αποτέλεσμα

Δημοσ.

τρέχω στο phpmyadmin¨

 

>INSERT INTO artists_top10 (Artist1, Artist2, Artist3, Artist4, Artist5, Artist6, Artist7, Artist8, Artist9, Artist10) VALUES ('Yolanda Be Cool', 'Dido', 'Denis the Menace', 'Dennis Ferrer', Moonrunners', 'Nicko', 'Eddy Wata', 'Steve Forest', 'Kings of tomorrow', 'DCA Project')

 

και μου λέει: #1064 - 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 '', 'Nicko', 'Eddy Wata', 'Steve Forest', 'Kings of tomorrow', 'DCA Project')' at line 1

 

---------- Προσθήκη στις 02:34 ---------- Προηγούμενο μήνυμα στις 02:31 ----------

 

Βρήκα το λάθος μου. Μου είχε ξεφύγει ένα '. Τώρα λειτουργεί. Ευχαριστώ για τη βοήθεια και τον χρόνο σου.

Δημοσ.
τρέχω στο phpmyadmin¨

 

>INSERT INTO artists_top10 (Artist1, Artist2, Artist3, Artist4, Artist5, Artist6, Artist7, Artist8, Artist9, Artist10) VALUES ('Yolanda Be Cool', 'Dido', 'Denis the Menace', 'Dennis Ferrer', Moonrunners', 'Nicko', 'Eddy Wata', 'Steve Forest', 'Kings of tomorrow', 'DCA Project')

 

και μου λέει: #1064 - 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 '', 'Nicko', 'Eddy Wata', 'Steve Forest', 'Kings of tomorrow', 'DCA Project')' at line 1

 

Αν τσεκάρεις την απάντησή σου, θα δεις ότι έχεις ξεχάσει μερικά quotes...

Για τρέξε αυτό:

>INSERT INTO artists_top10 (Artist1, Artist2, Artist3, Artist4, Artist5, Artist6, Artist7, Artist8, Artist9, Artist10) VALUES ('Yolanda Be Cool', 'Dido', 'Denis the Menace', 'Dennis Ferrer', 'Moonrunners', 'Nicko', 'Eddy Wata', 'Steve Forest', 'Kings of tomorrow', 'DCA Project')  

 

---------- Προσθήκη στις 02:44 ---------- Προηγούμενο μήνυμα στις 02:36 ----------

 

Βρήκα το λάθος μου. Μου είχε ξεφύγει ένα '. Τώρα λειτουργεί. Ευχαριστώ για τη βοήθεια και τον χρόνο σου.

 

2 είναι... (είναι και ένα στο τέλος...) :-D:-D

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...