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

PHP και SQL update function


screwman

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

Δημοσ.

Χαιρετώ,

 

Προσπαθώ να κάνω update ένα πεδίο σε μία mySQL και το άτιμο δεν γίνεται. Ούτε καν insert δεν μπορώ να κάνω νέες εγγραφές. Ο κώδικας που χρησιμοποιώ είναι:

 

<?php

 

$username="user";

$password="pass";

$database="database";

$host="where_is_the_host";

mysql_connect($host,$username,$password);

@mysql_select_db($database) or die( "Unable to select database");

 

$update_date=$_POST['update_date'];

$first_name=$_POST['first'];

$last_name=$_POST['last'];

$parent_name=$_POST['parent'];

 

$query = "UPDATE unpaid SET paid_status = 1, paid = ".$update_date." WHERE last_name='".$last_name."' and first_name='".$first_name."' and parent_name='".$parent_name."'";

 

echo ($query); //απλώς για να τσεκάρω ότι το query είναι γραμμένο σωστά

 

mysql_query($query);

mysql_close();

 

?>

 

Πεδία, πίνακες, μεταβλητές όλα σωστά. Απλά search queries δουλεύουν επίσης σωστά. Υποπτεύθηκα κάποια στιγμή ότι μπορεί να είναι θέμα privileges αλλά ο user μου έχει full access πάνω στον πίνακα.

 

Any help appreciated...

Δημοσ.

$query = "UPDATE `unpaid` SET `paid_status` = 1, `paid` = ".$update_date." WHERE `last_name`='".$last_name."' and `first_name`='".$first_name."' and `parent_name`='".$parent_name."'";

 

Μήπως τα `` βοηθήσουν? Επίσης δεν θα ήταν πιο εύκολο αντί να δίνεις ονοματεπώνυμο και πατρώνυμο, να έχει ο καθένας ένα προσωπικό ID και να λες ' WHERE id=".$id" ' ας πούμε?

Δημοσ.
$query = "UPDATE `unpaid` SET `paid_status` = 1, `paid` = ".$update_date." WHERE `last_name`='".$last_name."' and `first_name`='".$first_name."' and `parent_name`='".$parent_name."'";

 

Μήπως τα `` βοηθήσουν? Επίσης δεν θα ήταν πιο εύκολο αντί να δίνεις ονοματεπώνυμο και πατρώνυμο, να έχει ο καθένας ένα προσωπικό ID και να λες ' WHERE id=".$id" ' ας πούμε?

 

Τα ` δεν βοήθησαν καθόλου. Και έχω και την εντύπωση ότι άμα υπήρχε πρόβλημα με τα `, λογικά δεν θα μου δούλευαν ούτε τα select queries που κάνω και δεν τα χρησιμοποιώ, σωστά?

 

Το where clause δυστυχώς δεν γίνεται να αλλάξει.

 

Δεν καταλαβαίνω ρε γαμώτο...

Δημοσ.
Δοκίμασε να βάλεις το αυτάκι στο paid = ".$update_date." δηλαδή paid = '".$update_date."'

 

Δεν έπιασε...

 

Θα το σπάσω το άτιμο. Και τρέχω το query με copy paste directly από το phpMyAdmin και δουλεύει κανονικά!

 

---------- Το μήνυμα προστέθηκε στις 09:58 ----------

 

Νομίζω ότι κάτι βρήκα!

 

Εάν κάνω update εγγραφή που περιέχει λατινικούς χαρακτήρες, τότε δουλεύει κανονικά. Μήπως το πρόβλημα είναι στα ελληνικά?

 

---------- Το μήνυμα προστέθηκε στις 10:00 ----------

 

<?php

 

$username="user";

$password="pass";

$database="database";

$host="where_is_the_host";

mysql_connect($host,$username,$password);

@mysql_select_db($database) or die( "Unable to select database");

mysql_query("SET NAMES 'greek'");

 

$update_date=$_POST['update_date'];

$first_name=$_POST['first'];

$last_name=$_POST['last'];

$parent_name=$_POST['parent'];

 

$query = "UPDATE unpaid SET paid_status = 1, paid = ".$update_date." WHERE last_name='".$last_name."' and first_name='".$first_name."' and parent_name='".$parent_name."'";

 

echo ($query); //απλώς για να τσεκάρω ότι το query είναι γραμμένο σωστά

 

mysql_query($query);

mysql_close();

 

?>

 

Ορίστε! Με την παραπάνω προσθήκη δούλεψε κανονικά! Κάτι μου βρωμάει πάντως...

Δημοσ.

Φίλε το είχα πει και σε ένα άλλο Post ότι το καλύτερο για να συνδεθείς στην βάση σου είναι

 

mysql_query('set character set greek',$link);

mysql_query("SET NAMES 'greek'",$link);

 

και μου είχε πει ένα παιδί να βάζω utf-8 αλλά ποτέ μα ποτέ με το greek δεν είχα κανένα πρόβλημα σε αντίθεση με το utf-8

Δημοσ.

Αν βάλεις utf-8 (κάτι που προτείνεται) θα πρέπει η βάση σου να έχει collation utf-8 αλλιώς λογικά δεν θα σου δουλεύει.

 

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

Δημοσ.
Αν βάλεις utf-8 (κάτι που προτείνεται) θα πρέπει η βάση σου να έχει collation utf-8 αλλιώς λογικά δεν θα σου δουλεύει.

 

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

 

Collation στην βάση έχω utf8_unicode_ci.

 

Γενικά, πως είναι ο σωστός τρόπος να παίξεις με το encoding? Τι πρέπει να μπει στο meta στο head, τι θα πρέπει να μπει στο SET NAMES, τι θα πρέπει να μπει στο collation κ.ο.κ.

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

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

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