mysql insert sorunu

2 Cevap php

ive gerçekten garip bir sorun var. onun değil çalışma neden ben hiçbir ipucu var. i bir kullanıcı oluşturmak ve kimliği almak ve başka bir tabloda bu kimliği dayalı bir satır eklemek. satır bu kimliği ile takılı alır ama ancak bu satır için diğer değerler takılı değil!

 $user_id = mysqli_insert_id($this->connection);

 $query = "INSERT INTO selections 
 (user_id, language_id, country_id, region_id, city_id, gender_id, age_id, category_id)
 VALUES ($user_id, 1, 1, 0, 0, 0, 20, 0)";

böylece USER_ID diğer değerleri (tablodaki tüm 0 olan) takılı, ancak alır. i gerçekten sütunları kontrol ve bu sorunu hata ayıklamak için tüm yabancı anahtarları sildiniz. ama hiç ipucu var.

sütunları tüm INT vardır. ben bazen öyle değil, çalışır bir edebi dizi $ user_id değiştirirken garip bir parçası bazen bir. ancak satır her zaman oluşturulur. ve i $ User_id bir tamsayı olduğunu kontrol ettirin.

i bu zor bir sorun olduğunu ve şeylerin bir sürü neden olabilir biliyorum, ama şimdi 3 saat boyunca bu küçük sorunu çözmek için çalıştık. Birisi bana ben bu sorunu hata ayıklamak için yapabileceği bir şey verirse o kadar iyi olurdu.

GÜNCELLEME: i varsayılan değerlerini ayarlamak ve sadece ilk sütunu (User_id) çalışmıyor eklediğinizde bile zaman. her alanda 0 olduğunu. Çok tuhaf!

| selections | CREATE TABLE `selections` (
  `user_id` int(11) NOT NULL,
  `language_id` int(11) NOT NULL DEFAULT '1',
  `country_id` int(11) NOT NULL DEFAULT '1',
  `region_id` int(11) NOT NULL DEFAULT '0',
  `city_id` int(11) NOT NULL DEFAULT '0',
  `gender_id` int(11) NOT NULL DEFAULT '0',
  `age_id` int(11) NOT NULL DEFAULT '0',
  `category_id` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |


  $query = "INSERT INTO selections
        (user_id)
        VALUES ('$user_id')";

User_id 178 gösterir ve diğer alanlar 0 şunlardır: (

UPDATE:

Bu sql komut satırında çalıştı. ama php. ancak mysqli gerçekten yerleştirildi hiçbir hata ve satır oluşturulur ama neden diğer alanlar 0 vardır?

CEVAP: Benim hatam. i 0 0 0 0 0 0 0 geri değişti bir jquery senaryo vardı. onu bulmak zor bu yüzden AJAX çok üzgünüm ... sayfamda benim kötü var!

2 Cevap

Bu gibi durumlar içine çalıştırdığınızda idam önce, ekrana sorgu yazdırmak:

$query = "INSERT INTO ...";
echo $query

Deneyin:

$query = "INSERT INTO selections 
            (user_id, language_id, country_id, region_id, city_id, gender_id, age_id, category_id)
          VALUES 
            ({$user_id}, 1, 1, 0, 0, 0, 20, 0)";

SQL dize ifadeleri bunları başvururken {} PHP değişkenleri kaydırmak gerekir.

Use Your DEFAULT Constraints


Eğer varsayılan varsa o zaman INSERT deyimi değerleri ayarlamak gerekmez:

INSERT INTO selections 
  (user_id)
VALUES 
  ({$user_id})

Referencial Integrity


Sen son eklenen id alma ve başka bir tabloya bir sonraki insert içinde kullanarak, ama bu sütuna girecek değeri aslında var olmasını sağlamak için user_id sütun üzerinde tanımlı bir yabancı anahtar yok ediyoruz diğer tablodaki. Eğer tablonun adını & sağlarsanız Eğer son insert id için alıyorsanız sütun, ben ALTER TABLE statement vereceğiz.

$query = "INSERT INTO selections 
(user_id, language_id, country_id, region_id, city_id, gender_id, age_id, category_id)
VALUES ('$user_id', 1, 1, 0, 0, 0, 20, 0)";

$ User_id etrafında tek tırnak bunu yapabilir.