gizem mysql hatası

4 Cevap php

Ben mysql deneyimli hiçbir şekilde yaşıyorum ve bu kod satır bir hata almaya devam:

$sql= "INSERT INTO songs (unique_show_id, artist, date, year, city, state, venue, taper, transfered_by, source, mic_loc, lineage, uploaded_by, uploaded_on, show_notes, show_xml)
            VALUES('$showId', '$artist', '$showDate', '$year, '$city', '$state', '$venue', '$taper', '$transferer', '$source', '$mic_loc', '$lineage', '$uploader', NOW(), '$show_notes', '$show_xml')";    

//check to see if the query went through
            if (!mysql_query($sql,$con)){
              echo "query fail";
            die('Error: ' . mysql_error());
    }

Ben basit bir şey olduğundan emin değilim, ama hata nerede ben göremiyorum. Ben olsun hata iletisi:

query failError: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ipuhgbi', 'CA', '', '', '', '', '', '', 'danwoods', NOW(), '', '<show id=\'gm198' at line 2  

Ben takacağım değerlerin bazıları NULL, ama ben okudum ne ben bir sorun olmalı sanmıyorum. Herhangi bir fikir?

4 Cevap

Sonra eksik alıntı $year.

MySQL (bla bla di yakın) böyle bir hata yayımladığında, hata bahseder dize hemen önce genellikle. Bu durumda 'ipuhgbi' $ kent haritaları, o yüzden doğru '$ kenti' önce biliyorum, ve biz orada ne görüyorsunuz? Voila, eksik bir alıntı.

Sen use mysql_real_escape_string() sizin $ değişkenlerin her biri ve her birinde gerekiyor.

Also, read this StackOverflow question carefully SQL Enjeksiyon ile ilgili .

Hata hattında son tek tırnak kaçan değil gibi görünüyor.

Eğer sorgu girmeden dizeleri tüm sterilize hatırlamamız gerekiyor.

Hakkında emin olmak gerekir oldukça az şey vardır:

  1. (Örn. unique_show_id kodunuzu) sorguları yoluyla birincil anahtarları sokmayın
  2. Numaraları için tek tırnak kullanmayın.
  3. Bu sayım sorunlar örneğin önler kayıtları ekleme set varyantı kullanmak daha iyidir:
  4. Enjeksiyonlar sorunları yanı sıra tek tırnak sorgu hatalarının önlemek için dizeleri için sayılar ve mysql_real_escaps_string için intval kullanın.

    masa seti alana eklemek = 'FIELD_VALUE', field2 = 'FIELD_VALUE' / / ve böylece