2016-04-04 9 views
-2

PHP'ye yeni geliyorum ve kodumun SQL için otomatik artış kimliğine ayarlanması konusunda biraz sorun yaşıyorum. Denediğim yöntemin çok iyi bir yaklaşım olmadığını ve yarış koşullarının risklerini bildiğinin bilincindeyim. Kodumun kalan kısmını düzgün bir şekilde sıralayana kadar bu işlem geçici olacaktır.Bir satır eklerken MySQL otomatik artışlı birincil anahtar alanına ne eklenir?

Lütfen birileri bana burada yanlış yaptığımı söyleyebilir misiniz? Ya da geçerli bir kod almama yardım et?

My Sınıf:

<?php 

    $user = 'root'; 
    $pass = ''; 
    $db = 'testuser'; 

    $con=mysqli_connect('localhost', $user, $pass, $db) or die('Unable to connect'); 

    $data = json_decode(trim(key($_POST), '[]'), true); 

    $email = $data['email']; 
    $name = $data['name']; 
    $shortDes = $data['shortDes']; 
    $longDes = $data['longDes']; 
    $max = mysqli_prepare($con, 'SELECT MAX(society_id) FROM society'); 
    $society_id = $max + 1; 

    $statement = mysqli_prepare($con, 'INSERT INTO society(society_id, name, email, short_des, long_des) VALUES (?, ?, ?, ?, ?)'); 
    mysqli_stmt_bind_param($statement, 'issss', $societyId, $name, $email, $shortDes, $longDes); 
    mysqli_stmt_execute($statement); 
    mysqli_stmt_store_result($statement); 
    mysqli_stmt_close($statement); 

    mysqli_close($con); 
?> 

aşağıdaki parçada üzerinde yoğunlaşırken: Sadece tamamen otomatik artırılır alan için değerini kaldırmak için gerekli

$max = mysqli_prepare($con, 'SELECT MAX(society_id) FROM society'); 
     $society_id = $max + 1; 

     $statement = mysqli_prepare($con, 'INSERT INTO society(society_id, name, email, short_des, long_des) VALUES (?, ?, ?, ?, ?)'); 
     mysqli_stmt_bind_param($statement, 'issss', $societyId, $name, $email, $shortDes, $longDes); 
+0

"$ max" sorgunuzu yürütmüyor ve herhangi bir sonuç getirmiyorsunuz. Ayrıca, MAX() 'işlevi için bir takma ad kullanmalısınız – Fabio

+1

Neden MySQL sizin için otomatik arttırma işlemine izin vermiyor? Bunu yapmak için tasarlandığından beri. – Kenyon

+0

Ana anahtarları otomatik artışa ayarlıyorum, doğru yaptığımdan eminim, ama işe yaramıyor. Ben şimdi daha derin bir bakacağım şimdi – kmil

cevap

İlgili konular