2016-04-03 22 views
-3

MySQL veritabanımda büyük miktarda değişkenleri değiştiren bir sayfa var, ve şimdiye kadar hepsi harika çalıştı, ama şimdi bunların içindeki tüm sorgular Tek mantık kapısı, görünür bir sebepten dolayı çalışmayı durdurdu. PHP/MySQL sorgusu görünür bir neden olmadan çalışmayı durdurdu

ben onayladıktan aşağıdadır:
- değişken yayınlanan ve kullanılan amaca uygun olarak kapının ifadesi "eğer"
- mantık kapısı amaçlandığı gibi (Ben de bir şeyler vb yankı tetiklenir bunun içinde).
- Veritabanı bağlantısı kuruldu, aynı bağlantı değişkeninde bu mantık geçidinden önce ve sonra çeşitli türlerde sorguları başarıyla çalıştırıyorum.
- Bağlantı kullanıcısı TÜM İHLALLERİ etkinleştirildi, bu mantık geçidini çevreleyen yukarıda bahsedilen sorgular benzer işlevleri başarıyla kullanıyor.

İşte mantık kapısı var: Birden fazla değişiklik denedim

if (!empty($_POST["addqual"])){ 
    $coladqual = $_POST["addqual"]; 
    $sqlf = "ALTER TABLE users ADD UNIQUE ('$coladqual') INT(2) NOT NULL"; 
    $conn->query($sqlf); 
    $sqlc = "INSERT INTO competencebonus (competence,bonus) 
    VALUES ($coladqual,0)"; 
    $conn->query($sqlc); 
} 

ama benim yaptığım olursa olsun çalıştırmak için görünmüyor. Bu mantık geçitlerinden önce ve sonra en az 20 tane daha başka sorgum var ve bu ikisi arasında hiç bir fark yok.

DÜZENLEME - İşte hatası (hata raporu sözdizimi bana verilen kim hepinize teşekkürler)

var Eğer SQL sözdizimi bir hata var; çizgisinde yakın '' TestAA 'kullanma hakkı sözdizimi için MySQL sunucu sürümü ile uyumlu kılavuzu) INT (2) DEĞİL BOŞ EŞSİZ' kontrol 1

Ne bana en garip grev sadece sağ ayraç olmasıdır post girişi (TestAA) çevresinde. İkisine de sahip olmalı mı?

Ben sözdizimi değiştirmeyi denedim ve aşağıdaki hata var:

Mükerrer giriş '0' 'TestAB'

sözdizimi anahtar için oldu:

$sqlf = "ALTER TABLE users ADD `$coladqual` INT(2) NOT NULL UNIQUE"; 

SON DÜZENLEME:

Çalıştırdı. Jeff Pucket II tarafından önerilen "NOT NULL" ifadesini silindi. Her nasılsa bu, parantezin silinmesi ve kesme işareti yerine kesme işareti kullanımıyla birleştiğinde, işe yaradı. Bu konuda bana yardımcı olacak sabrınız için teşekkürler.

+5

'un çalıştırılması Hata denetimi her zaman önce gelmelidir. Öz eğitim en güçlüsüdür. – Rottingham

+3

Sorgunun başarılı bir şekilde yürütülüp yürütülmediğini kontrol etmelisiniz. Bir şey başarısız olursa, '$ conn' bu konuda rapor oluşturabilir. (Ve PDO veya MySQLi kullanıp kullanmadığınızı belirtmelisiniz.) – Arjan

+0

MySQLi. Bu sorgulara bir hata raporu ekleme hakkında nasıl giderim? Geçen yıl boyunca bulduğum tüm örnekler, tamamen farklı bir sorgu biçimi kullanıyor. – noobequaltotrue

cevap

1

Varolan bir tablonun benzersiz bir null sütunuyla değiştirmeye çalıştığınız anlaşılıyor. Motorunuz sıfır geçmediği sürece, tabloda herhangi bir satır zaten mevcutsa, bunun başarısız olmasını beklerdim. O zaman bile, bu, benzersiz kısıtlama nedeniyle birden fazla kayıt olsaydı başarısız olurdu. Ayrıca, eklenen sütun adının zaten mevcut olmadığından emin olun.

MySQLi kullanarak hatayı almak için deneyin: $result = $conn->query($sqlf) or die($conn->error);

+0

BENZERSİZ olmadan NULL olmadan denedim ve her ikisi de olmadan. 3 varyasyondan hiçbirinde işe yaramıyor. Ayrıca, daha "basit" INSERT INTO sorgusu da çalışmıyor. – noobequaltotrue

+0

Tamam, geri döndüm. Üzgünüm, saat dilimimde gece yarısıydı ve 10 saat boyunca düz bir şekilde programlama yapıyordum, beynim derinden kızarmıştı! Hata kodu için teşekkürler, hemen deneyeceğim. – noobequaltotrue

0

'benzersiz' kısıtlaması Sorgunuzun sonunda gitmeli

$sqlf = "ALTER TABLE users ADD ('$coladqual') INT(2) NOT NULL UNIQUE"; 

hata denetimi sen MySQL tadı ne bağlıdır

+0

Çalışmadı. "Lezzet" ile ne demek istediğinden emin değilim. Bir WAMP kurulumu kullanıyorum, bu yüzden uzun süredir yazılımlara bakmadım. – noobequaltotrue

+0

Genellikle MySQLi vs MySQL'i düşünüyordum. MySQL hata raporlama belgeleri buradadır http://php.net/manual/en/function.mysql-error.php Sözdiziminiz genellikle bu belgede olduğu gibi MySQLi kullandığınız gibi görünüyor http://php.net/manual/en /mysqli.error.php MySQLi işlevlerini MySQL db üzerinde çalıştırıyor musunuz? – dg4220

+0

Bu şekilde deneyin ve ne aldığınızı görün $ add_col = mysql_query ($ sqlf, $ conn); echo mysql_error ($ add_col); – dg4220

İlgili konular