[RESOLU] Pb champ de table

Eléphant du PHP | 82 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 | 7257 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éphant du PHP | 82 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 | 1238 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
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie

Eléphant du PHP | 82 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 | 8755 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éphant du PHP | 82 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?