2016-04-13 14 views
0

numaralı terminalde düzgün çalışır. Onaylandıktan sonra bir veritabanına yazılması gereken bazı form verilere sahibim. Bir sorgu dizesi oluşturur ve onu mysqli'ye iletirim, ancak birincil anahtarımın boş olamayacağı konusunda hata alıyorum. Bu boş değil ve mysql terminalinde sorgu dizisi düzgün yürütülür. MySqli hatası PHP'ye eklenir, ancak aynı sorgu dizisi

$query_string = "insert into podnosilac (ime, prezime, jmbg) 
     values (
     aes_encrypt('". $mysqli->real_escape_string($_SESSION["ime"])."', @key_str, @init_vector), 
     aes_encrypt('". $mysqli->real_escape_string($_SESSION["prezime"])."', @key_str, @init_vector), 
     aes_encrypt('". $mysqli->real_escape_string($_SESSION["jmbg"])."', @key_str, @init_vector) 
)"; 
if (!$mysqli->query($query_string)) { 
     echo $mysqli->error; 
} 

Bu

Sadece sorgu hattı> mysqli- yukarıda onu yankı zaman query_string $ değeridir:

Nitekim olarak
insert into podnosilac (ime, prezime, jmbg) 
    values (aes_encrypt('ivana', @key_str, @init_vector), aes_encrypt('corovic', @key_str, @init_vector), aes_encrypt('12345678910', @key_str, @init_vector)) 

bu çizgiyi çalıştığınızda:

$mysqli->query("insert into podnosilac (ime, prezime, jmbg) 
    values (aes_encrypt('ivana', @key_str, @init_vector), aes_encrypt('corovic', @key_str, @init_vector), aes_encrypt('12345678910', @key_str, @init_vector))"); 

Hala "Sütun 'jmbg' değeri boş olamaz" alıyorum.

aes_encrypt ile ilgili bir şey. @key_str ve @init_vector veritabanı üzerinde tanımlanmıştır, belki de bu onları geçmek için bir yol değil mi?

Bu neden olabilir?

1) Doğru veritabanına

2) veritabanına bağlantı oluştururken bu mysql değişkenleri ayarlamıyorsanız bağlanmıyorsunuzdur:

+1

@key_str ve @init_vector nerede tanımlıdır? –

+0

Birincil anahtar otomatik artışınız var mı? –

+0

aldığınız hata nedir? – Unex

cevap

1

İki şey düşünebiliriz. 'dan hemen sonra $mysqli->query('SET @yourvariable := whatever'); gibi bir şey yapın, çünkü bu değişkenler oturumuna özgü'dur. Bu, terminaliniz üzerinde çalışan sorguyu (aslında bu değişkenleri ayarlayacağınız) ve komut dosyanızda çalışmamanızı (nerede yapmıyorsanız) açıklayabilir.

+0

@Mike, key_str ve init_vector null. Bunlar kullanıcı tanımlı değişkenlerdir ve yalnızca oturum için mysql terminalinde kullanılabilirler. Php'de kullanmak için $ key_str ve $ init_vector'ı tanımladım. – ivanacorovic