[RESOLU] Pb champ de table

Eléphanteau du PHP | 47 Messages

16 mars 2017, 22:47

Bonjour
J'ai une table nommée : t_save avec 2 champs : save_id et save_name.
J'effectue un inser into comme ceci :

Code : Tout sélectionner

// Recherche ville $result = $mysqli -> query('SELECT city_id,city_name FROM t_city WHERE city_name LIKE ("'.$villeNom.'")'); $row = $result -> fetch_array(); echo $row['city_id'] .' - '. $row['city_name']; $saveName = $row['city_name']; // Enregistrement dans Table save $mysqli -> query('INSERT INTO t_save (save_name) VALUES ("'.$saveName.'")'); var_dump($mysqli);
Cela fonctionne.
Maintenant je rajoute un champ à cette table : save_detail. quand j'effectue un inser into , les enregistrements ne se font plus ??
J'ai mis un var_dump pour voir se qu'il se passe, et j'ai une erreur apparemment :
C:\wamp64\www\essai\index.php:39:
object(mysqli)[1]
public 'affected_rows' => int -1
public 'client_info' => string 'mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $' (length=79)
public 'client_version' => int 50011
public 'connect_errno' => int 0
public 'connect_error' => null
public 'errno' => int 1364
public 'error' => string 'Field 'save_detail' doesn't have a default value' (length=48)
public 'error_list' =>
array (size=1)
0 =>
array (size=3)
'errno' => int 1364
'sqlstate' => string 'HY000' (length=5)
'error' => string 'Field 'save_detail' doesn't have a default value' (length=48)
public 'field_count' => int 2
public 'host_info' => string 'localhost via TCP/IP' (length=20)
public 'info' => null
public 'insert_id' => int 0
public 'server_info' => string '5.7.14' (length=6)
public 'server_version' => int 50714
public 'stat' => string 'Uptime: 3652 Threads: 1 Questions: 3549 Slow queries: 0 Opens: 248 Flush tables: 1 Open tables: 174 Queries per second avg: 0.971' (length=136)
public 'sqlstate' => string '00000' (length=5)
public 'protocol_version' => int 10
public 'thread_id' => int 395
public 'warning_count' => int 0
Je ne comprend pas l'ereur.

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7120 Messages

16 mars 2017, 23:21

Bonjour,

Code : Tout sélectionner

Field 'save_detail' doesn't have a default value
Tu as visiblement oublié d'indiquer la valeur de save_detail
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 47 Messages

17 mars 2017, 06:28

Bonjour
Oui j'ai vu, mais quel valeur ? Moi pour l'instant je ne veux rien rentrer, je suis obligé de rentrer quelque chose ? :?:

Mammouth du PHP | 1195 Messages

17 mars 2017, 12:12

Tu as 2 solution, soit tu rentre une valeur à chaque INSERT soit tu modifie la structure de ta table pour lui mettre une vbaleur par défaut. tu peux aussi préciser que ce champs peut être null

Eléphanteau du PHP | 47 Messages

17 mars 2017, 14:13

Bonjour
J'ai mon autre table en haut de mon code qui se nomme t_city. (Elle est identique à ma table t_save.(au niveau des champs)).
J'en ai un qui se nomme city_detail. Et je n'ai pas de soucis particulier. Je ne comprend pas. Je ne rentre aucune valeur, et elle est configuré pareil que save_detail ??
je vais tester en mettant NULL ou autre ..

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8675 Messages

17 mars 2017, 15:40

salut,

sans le code création de la table tu n'auras que des réponses un peu vague, même si je suis d'accord avec ce qui t'a été dit ici.

a priori tu as indiqués une colonne not null sans "default" et du coup l'insertion ne peux pas se faire.

connais tu le insert select ? https://dev.mysql.com/doc/refman/5.7/en ... elect.html

exemple
INSERT INTO t_save (save_name,save_detail )  select concat_WS(' - ',city_id,city_name) 
FROM t_city WHERE city_name LIKE (xxxxx)
J'ai laissé le like, mais sauf si $villeNom contient des joker c'est inutile utilise directement l'égalité.


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 47 Messages

18 mars 2017, 09:36

Bonjour
Pour répondre à Spols, j'ai mis une valeur "NULL" dans la table directement et ça fonctionne.
Mais je ne comprend toujours pas pourquoi?