Numéro d'erreur: 1054 Unknown column problème avec la table de base de données insérer
Je vais avoir un problème avec le code suivant pour ajouter des enregistrements à une "offre" de la table db dans CodeIgniter..
Table de base de données (mySQL):
1 ID int(11) No
2 OfferName varchar(150) latin1_swedish_ci No
3 OfferLength varchar(150) latin1_swedish_ci No
4 OfferTitle varchar(150) latin1_swedish_ci No
5 OfferDescription varchar(300) latin1_swedish_ci No
6 OfferURL varchar(150) latin1_swedish_ci No
7 OfferContent varchar(300) latin1_swedish_ci No
8 Key varchar(10) latin1_swedish_ci Yes NULL
Méthode dans le modèle (offer_model.php):
public function entry_insert(){
$data = array(
'OfferName' => $this->input->post('OfferName'),
'OfferLength' => $this->input->post('OfferLength'),
'OfferTitle' => $this->input->post('OfferTitle'),
'OfferDescription' => $this->input->post('OfferDescription'),
'OfferURL' => $this->input->post('OfferURL'),
'OfferContent' => $this->input->post('OfferContent'),
);
$this->db->insert('offers',$data);
}
Contrôleur:
function addOffer() {
//if the form is submitted
if ($this->input->post('mysubmit')) {
//insert data into db using offer_model model
$this->offer_model->entry_insert();
}
Formulaire dans la vue:
<div class="form">
<?php echo form_open('newOffer/addOffer'); ?>
<legend>Please enter details for your new offer</legend>
<label for="OfferName">Offer Name: <span class="required">*</span></label>
<input type="text" name="OfferName" id="Offer Name" placeholder="Please enter the name of your offer"/>
<label for="OfferLength">Offer length:</label>
<input type="text" name="OfferLength" id="OfferLength" placeholder="Please enter the length of your offer"/>
<label for="OfferTitle">Offer title:</label>
<input type="text" name="OfferTitle" id="OfferTitle" placeholder="Please enter the title of your new offer"/>
<label for="OfferDescription">Offer description: </label>
<input type="text" name="OfferDescription" id="OfferDescription" placeholder="Please enter a description of your new offer"/>
<label for="OfferURL">Offer link URL:</label>
<input type="text" name="OfferURL" id="OfferURL" placeholder="Please enter the URL of your new offer"/>
<label for="OfferContent">Offer content:</label>
<input type="text" name="OfferContent" id="OfferContent" placeholder="Please enter the content for your new offer"/>
<fieldset class="submit_field">
<?php echo form_submit('mysubmit', 'Submit Form'); ?>
</fieldset>
</div><!-- end of form div -->
Soumettre le formulaire de résultats dans:
Numéro d'erreur: 1054 Unknown column 'OfferName' in 'field list'
Ne peuvent tout simplement pas comprendre que le tableau est là, et les noms de champ semblent correspondre?
Toute aide serait grandement appréciée. Merci à l'avance!
- Ne l'insérez réussir si vous supprimez
OfferName
de la$data
tableau? - Salut, j'ai essayé que, il se déplace sur suivant dans le tableau - OfferLength.
- Est le nom de la table
Offers
ouoffers
? Il semble que le tableau n'est pas nommé correctement ou que vous utilisez la mauvaise base de données. - Salut Brendan, merci pour l'aide ici. Il est "offres". Œuvres pour la sortie des données de la même table afin perplexe?
- Obtenir la sortie de
$this->db->last_query();
et exécuter la requête manuellement. Si cela fonctionne, il y a une connexion db utilisateur ou de problème. Si ça ne marche pas, CI ce n'est pas produire la bonne requête.
Vous devez vous connecter pour publier un commentaire.
Réponse tardive, mais peut aider les autres à aller de l'avant.
Je recevais ce 1054 erreur dans l'une de mes requêtes. Ma requête a été l'un de ligne:
Mais pour une raison quelconque, le DB d'erreur j'ai inclus une requête avec 28 null lorsque les déclarations qui comprenait des champs qui n'étaient pas seulement pas appelé à partir de la requête, mais n'existent pas dans cette table (d'où le db d'erreur).
J'ai fait un dump de $this->db:
... et il m'a montré que le CI ar_where var était en effet plein avec cette étrange où les données.
J'ai compris que cela venait de la seule autre de la requête exécutée précédemment sur la page et ensuite compris pourquoi. Que les précédentes db appel a été effectué à partir d'une bibliothèque et sont donc utilisés:
De sorte que les données précédentes n'a pas été effacé. Après pour supprimer manuellement les données à partir de la fin de la première fonction de la bibliothèque tout a bien fonctionné à nouveau et le 1054 erreur a disparu.
Également, à l'adresse shomz suggestion, si il y a une erreur de requête, votre last_query() ne s'exécutera jamais comme il vient après un succès de la requête. L'exécution s'arrête avant que la ligne peut être exécutée avec un db d'erreur. Dans ce cas, il ne m'a pas aidé non plus. Mais le var_dump($this->db) a aider pour cela!
echo $this->db->last_query();
va vous sauver la vie dans de nombreux cas.Vous avez également une erreur de syntaxe (virgule) dans votre modèle:
'OfferContent' => $this->input->post('OfferContent'),
Aussi, vous avez écrit dans le premier paragraphe que la table est appelé
offer
encore l'insertion dansoffers
. Assurez-vous également que éclairci.echo $this->db->last_query();
disent que si vous le mettez juste en dessous de la fonction insérer dans votre modèle?public function entry_insert(){ $data = array( 'OfferName' => $this->input->post('OfferName'), 'OfferLength' => $this->input->post('OfferLength'), 'OfferTitle' => $this->input->post('OfferTitle'), 'OfferDescription' => $this->input->post('OfferDescription'), 'OfferURL' => $this->input->post('OfferURL'), 'OfferContent' => $this->input->post('OfferContent') ); $this->db->insert('offers',$data); echo $this->db->last_query(); }
Rien sorti..die();
droit après que la dernière commande echo. Il devrait arrêter le script de s'exécuter plus loin.