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

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

Δημοσ. (επεξεργασμένο)

Δείτε πιο κάτω για το νέο πρόβλημα...

 

Έχω έναν κώδικα 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]')");
}

Επεξ/σία από nickolasemp
Δημοσ.

Λογικα δεν θα πρεπε να χεις κατι τετοιο;

 

>
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] + ","+ και τα λοιπα.....);

Δημοσ.

Λογικα δεν θα πρεπε να χεις κατι τετοιο;

 

>
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

Δημοσ.

Το ότι σου έβγαζε άκυρο αριθμό σε αυτό που σου έγραψε ο bnvdarklord είναι λογικό - το "+" είναι για μαθηματική πράξη, όχι για να ενώνεις strings.

To Array[0]... που έβγαζε αρχικά είναι (μάλλον) επειδή το περιεχόμενο της τιμής που πας να αποθηκεύσεις είναι και πάλι πίνακας

Για το τελευταίο που έγραψες, θα πρέπει να δούμε και τον υπόλοιπο κώδικα

Δημοσ.

> 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

Δημοσ.

Το δέχεται σαν 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)

θα το δεχτεί

Δημοσ.

Και πώς διαφεύγεις την απόστροφο σε 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

Δημοσ.

Για το τυπικό (μιας και το βρήκες) για να χρησιμοποιήσεις quote, το κάνεις με ανάποδη κάθετο:

>echo "σημείο \"μηδέν\""; //=>σημείο "μηδέν"

Δημοσ.

Για το τυπικό (μιας και το βρήκες) για να χρησιμοποιήσεις quote, το κάνεις με ανάποδη κάθετο:

>echo "σημείο \"μηδέν\""; //=>σημείο "μηδέν"

 

Στο συγκεκριμένο παράδειγμα το έκανα και μου είχε εμφανίσει πρόβλημα θυμάμαι. Το query κολλούσε στο \ και δεν του άρεσε. Thanks though

Δημοσ.

Και σωστά κόλλησε. Η διαφυγή δεν είναι για το query που κάνεις στη βάση, αλλά για την php, δηλαδή πχ:

>$query="SELECT name FROM customers WHERE name = \"".$search."\"";

το οποίο και σου δίνει έξοδο

>SELECT name FROM customers WHERE name = "testname"

Στο query καθαυτό, δεν έχεις λόγο να κάνεις διαφυγή - εντολές δίνεις

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...