nickolasemp Δημοσ. 13 Μαρτίου 2012 Δημοσ. 13 Μαρτίου 2012 (επεξεργασμένο) Δείτε πιο κάτω για το νέο πρόβλημα... Έχω έναν κώδικα php και θέλω να τρέξω μία βάση sqlite. Έχω πρόβλημα με το INSERT INTO. Τέτοιο κόλλημα δεν έχω ξαναφάει. Κάθε φορά που πάω να εκτυπώσω τα δεδομένα (και από τον sqlite browser τα βλέπω) αντί για τα δεδομένα μου έχω κάτι Array[0], Array[1]...Array[9]. Όποιος βοηθήσει θα είμαι τεράστια ευγνώμων. >$db = sqlite_open('../../root/data.sqlite', 0666, $sqlite_error); //Initialising the database if ($db !=false) { sqlite_query($db, 'CREATE TABLE data (Error varchar(2), UTCOffsetMin varchar(5), LocalTimeStamp DATE, EnergyDeliveredkWh varchar(10), EnergyReceivedkWh varchar(10), EnergyDelkVARh varchar(10), EnergyReckVARh varchar(10), ApparentPowerTotalkVA varchar(5), RealPowerTotalkW varchar(5), ReactivePowerTotalkVAR varchar(5))'); } else { die ($sqlite_error); } for ($i=0; $i<$rows; $i++) { sqlite_query($db,"INSERT INTO data (Error, UTCOffsetMin, LocalTimeStamp, EnergyDeliveredkWh, EnergyReceivedkWh, EnergyDelkVARh, EnergyReckVARh, ApparentPowerTotalkVA, RealPowerTotalkW, ReactivePowerTotalkVAR) VALUES ('$matrix_data[$i][0]', '$matrix_data[$i][1]', '$matrix_data[$i][2]', '$matrix_data[$i][3]', '$matrix_data[$i][4]', '$matrix_data[$i][5]', '$matrix_data[$i][6]', '$matrix_data[$i][7]', '$matrix_data[$i][8]', '$matrix_data[$i][9]')"); } Επεξ/σία 13 Μαρτίου 2012 από nickolasemp
bnvdarklord Δημοσ. 13 Μαρτίου 2012 Δημοσ. 13 Μαρτίου 2012 Λογικα δεν θα πρεπε να χεις κατι τετοιο; > sqlite_query ($db, "INSERT INTO data (Error, UTCOffsetMin, LocalTimeStamp, EnergyDeliveredkWh, EnergyReceivedkWh, EnergyDelkVARh, EnergyReckVARh, ApparentPowerTotalkVA, RealPowerTotalkW, ReactivePowerTotalkVAR) VALUES (" + $matrix_data[$i][0] + "," + $matrix_data[$i][1] + ","+ και τα λοιπα.....);
nickolasemp Δημοσ. 13 Μαρτίου 2012 Μέλος Δημοσ. 13 Μαρτίου 2012 Λογικα δεν θα πρεπε να χεις κατι τετοιο; > sqlite_query ($db, "INSERT INTO data (Error, UTCOffsetMin, LocalTimeStamp, EnergyDeliveredkWh, EnergyReceivedkWh, EnergyDelkVARh, EnergyReckVARh, ApparentPowerTotalkVA, RealPowerTotalkW, ReactivePowerTotalkVAR) VALUES (" + $matrix_data[$i][0] + "," + $matrix_data[$i][1] + ","+ και τα λοιπα.....); Όχι,ήθελε άλλου είδους concatenation. Το δικό σου μού έβγαζε έναν μόνο αριθμό άσχετο με τα δεδομένα μου -πού τον βρήκε ένας Θεός ξέρει. Το concatenation πρέπει να γίνει έτσι (με βοήθησε και η echo για να δω τί προβλήματα έβγαζε): >sqlite_query($db,"INSERT INTO data (Error, UTCOffsetMin, LocalTimeStamp, EnergyDeliveredkWh, EnergyReceivedkWh, EnergyDelkVARh, EnergyReckVARh, ApparentPowerTotalkVA, RealPowerTotalkW, ReactivePowerTotalkVAR) VALUES (".$matrix_data[$i][0].", ".$matrix_data[$i][1].", ".$matrix_data[$i][2].", ".$matrix_data[$i][3].", ".$matrix_data[$i][4].", ".$matrix_data[$i][5].", ".$matrix_data[$i][6].", ".$matrix_data[$i][7].", ".$matrix_data[$i][8].", ".$matrix_data[$i][9].")"); Τώρα μού βγάζει πρόβλημα βέβαια στα δεδομένα του date: Warning: sqlite_query() [function.sqlite-query]: unrecognized token: ":" in
dewn735 Δημοσ. 13 Μαρτίου 2012 Δημοσ. 13 Μαρτίου 2012 Το ότι σου έβγαζε άκυρο αριθμό σε αυτό που σου έγραψε ο bnvdarklord είναι λογικό - το "+" είναι για μαθηματική πράξη, όχι για να ενώνεις strings. To Array[0]... που έβγαζε αρχικά είναι (μάλλον) επειδή το περιεχόμενο της τιμής που πας να αποθηκεύσεις είναι και πάλι πίνακας Για το τελευταίο που έγραψες, θα πρέπει να δούμε και τον υπόλοιπο κώδικα
nickolasemp Δημοσ. 13 Μαρτίου 2012 Μέλος Δημοσ. 13 Μαρτίου 2012 > 20: echo "INSERT INTO data (Error, UTCOffsetMin, LocalTimeStamp, EnergyDeliveredkWh, EnergyReceivedkWh, EnergyDelkVARh, EnergyReckVARh, ApparentPowerTotalkVA, RealPowerTotalkW, ReactivePowerTotalkVAR) VALUES (".$matrix_data[$i][0].", ".$matrix_data[$i][1].", ".str_replace(':', '.', $matrix_data[$i][2]).", ".$matrix_data[$i][3].", ".$matrix_data[$i][4].", ".$matrix_data[$i][5].", ".$matrix_data[$i][6].", ".$matrix_data[$i][7].", ".$matrix_data[$i][8].", ".$matrix_data[$i][9].")<br/> "; 21: sqlite_query($db,"INSERT INTO data (Error, UTCOffsetMin, LocalTimeStamp, EnergyDeliveredkWh, EnergyReceivedkWh, EnergyDelkVARh, EnergyReckVARh, ApparentPowerTotalkVA, RealPowerTotalkW, ReactivePowerTotalkVAR) VALUES (".$matrix_data[$i][0].", ".$matrix_data[$i][1].", ".str_replace(':', '.', $matrix_data[$i][2]).", ".$matrix_data[$i][3].", ".$matrix_data[$i][4].", ".$matrix_data[$i][5].", ".$matrix_data[$i][6].", ".$matrix_data[$i][7].", ".$matrix_data[$i][8].", ".$matrix_data[$i][9].")"); Για να ξεφύγω από τον σκόπελο της sqlite που μάλλον δε δέχεται : (σκέφτομαι σοβαρά να περάσω σε Mysql -ούτως ή αλλως θα έχει ο πίνακας πάνω από 50.000 εγγραφές να διαχειρίζεται- όπου δε θα έχω και πρόβλημα. Βέβαια ολόκληρη Mysql για αυτό τον πίνακα μόνο είναι λίγο too much) έβαλα την str_replace(':', '.', $matrix_data[$i][2]). Τώρα το αποτέλεσμα είναι ακριβώς εκεί, στην μετατροπή. Μα καλά, γιατί η sqlite δε δέχεται το colon; INSERT INTO data (Error, UTCOffsetMin, LocalTimeStamp, EnergyDeliveredkWh, EnergyReceivedkWh, EnergyDelkVARh, EnergyReckVARh, ApparentPowerTotalkVA, RealPowerTotalkW, ReactivePowerTotalkVAR) VALUES (0, -720, 2011-09-04 17.20.00, 216911, 134616, 62394, 90402, 37, 34, 14) Warning: sqlite_query() [function.sqlite-query]: near "17.20": syntax error in /var/www/connect.oncedb.php on line 21 Σε περίπτωση που μπορεί να βοηθήσει η διεύθυνση με τα στοιχεία του server είναι dawsongr.dyndns.org/info.php Έχω επισυνάψει και ολόκληρο το αρχείο που κάνει το instantiation. connect.oncedb.php
dewn735 Δημοσ. 13 Μαρτίου 2012 Δημοσ. 13 Μαρτίου 2012 Το δέχεται σαν string, έτσι όπως το έχεις είναι σα να της περνάς αριθμό - αν το κάνεις κάπως έτσι: >INSERT INTO data (Error, UTCOffsetMin, LocalTimeStamp, EnergyDeliveredkWh, EnergyReceivedkWh, EnergyDelkVARh, EnergyReckVARh, ApparentPowerTotalkVA, RealPowerTotalkW, ReactivePowerTotalkVAR) VALUES (0, -720, '2011-09-04 17:20:00', 16911, 134616, 62394, 90402, 37, 34, 14) θα το δεχτεί
nickolasemp Δημοσ. 13 Μαρτίου 2012 Μέλος Δημοσ. 13 Μαρτίου 2012 Και πώς διαφεύγεις την απόστροφο σε query? Never mind, το βρήκα, δεν χρειάζεται το ερώτημα να διαφύγεις την απόστοροφο γιατί έχω ΄ήδη βάλει στην αρχή quotes. sqlite_query($db,"INSERT INTO data (Error, UTCOffsetMin....) VALUES (".$matrix_data[$i][0].", ".$matrix_data[$i][1].", ' ".$matrix_data[$i][2]." ' , ".$matrix_data[$i][3].",..."); Σας ευχαριστώ dewn735 & bnvdarklord
dewn735 Δημοσ. 13 Μαρτίου 2012 Δημοσ. 13 Μαρτίου 2012 Για το τυπικό (μιας και το βρήκες) για να χρησιμοποιήσεις quote, το κάνεις με ανάποδη κάθετο: >echo "σημείο \"μηδέν\""; //=>σημείο "μηδέν"
nickolasemp Δημοσ. 13 Μαρτίου 2012 Μέλος Δημοσ. 13 Μαρτίου 2012 Για το τυπικό (μιας και το βρήκες) για να χρησιμοποιήσεις quote, το κάνεις με ανάποδη κάθετο: >echo "σημείο \"μηδέν\""; //=>σημείο "μηδέν" Στο συγκεκριμένο παράδειγμα το έκανα και μου είχε εμφανίσει πρόβλημα θυμάμαι. Το query κολλούσε στο \ και δεν του άρεσε. Thanks though
dewn735 Δημοσ. 13 Μαρτίου 2012 Δημοσ. 13 Μαρτίου 2012 Και σωστά κόλλησε. Η διαφυγή δεν είναι για το query που κάνεις στη βάση, αλλά για την php, δηλαδή πχ: >$query="SELECT name FROM customers WHERE name = \"".$search."\""; το οποίο και σου δίνει έξοδο >SELECT name FROM customers WHERE name = "testname" Στο query καθαυτό, δεν έχεις λόγο να κάνεις διαφυγή - εντολές δίνεις
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα