Rumah  >  Soal Jawab  >  teks badan

Adakah "pilih wujud" masih kembali benar dalam fungsi saya?

Saya mengubah suai sedikit fungsi Select Exists yang saya temui pada stackoverflow, tetapi tidak kira apa yang saya cuba, fungsi saya di bawah sentiasa kembali $sqlResulttrue. Walaupun saya hanya menyimpan dua entri dalam pangkalan data. Adakah Select wujud masih sah?

Tiada jawapan yang dicadangkan oleh sistem stackoverflow menjawab soalan saya, sebaliknya mencadangkan menggunakan kaedah yang menyemak bilangan baris yang dikembalikan dan bukannya menggunakan wujud. (Atau pautan yang mereka berikan tidak benar-benar menjelaskan apa yang diwakili oleh hasil yang wujud.)

function uniquedoesexist($dbHandle,$tablename,$fieldname,$value) 
{
    $sql = 'SELECT EXISTS(SELECT * FROM `' . $tablename .
         '` WHERE `'.$fieldname.'` = ? 
            LIMIT 1
    )';
    $stmt = mysqli_prepare($dbHandle, $sql);
    mysqli_stmt_bind_param($stmt, 's',$value);  
    $sqlResult = mysqli_stmt_execute($stmt);

    echo '$sqlResult: ' . $sqlResult.$br;
    return $sqlResult;
}

Gunakan: nama pengguna Index varchar(255) utf8_german2_ci

Maaf untuk soalan pemula saya. Entri untuk nama medan ditetapkan sebagai unik.

P粉236743689P粉236743689205 hari yang lalu358

membalas semua(1)saya akan balas

  • P粉401901266

    P粉4019012662024-03-29 09:21:29

    Anda perlu mendapatkan hasil pertanyaan dengan cara berikut:

    function uniquedoesexist($dbHandle, $tablename, $fieldname, $value) {
        $sql = 'SELECT EXISTS(SELECT * FROM `'.$tablename.'` WHERE `'.$fieldname.'` = ? LIMIT 1)';
        $stmt = mysqli_prepare($dbHandle, $sql);
        mysqli_stmt_bind_param($stmt, 's',$value);  
        
        mysqli_stmt_execute($stmt);
        mysqli_stmt_bind_result($stmt, $data);
        mysqli_stmt_fetch($stmt);
    
    
        echo "SqlResult for $value: " . $data . PHP_EOL;
        return $data;
    }

    Ujian dalam talian PHP mysqli

    Cara lain ialah mendapatkan bilangan baris yang dikembalikan dan bukannya menggunakan SELECT EXISTS:

    <?php
    
        function uniquedoesexist($dbHandle, $tablename, $fieldname, $value) {
            
            $sql = 'SELECT * FROM `'.$tablename.'` WHERE `'.$fieldname.'` = ? LIMIT 1;';
            $stmt = mysqli_prepare($dbHandle, $sql);
            mysqli_stmt_bind_param($stmt, 's',$value);  
            
            mysqli_stmt_execute($stmt);
            mysqli_stmt_store_result($stmt);
            
            $found = mysqli_stmt_num_rows($stmt);
        
        
            echo "SqlResult for $value: " . $found . PHP_EOL;
            return $found;
        }

    PHP mysqli num_rows

    balas
    0
  • Batalbalas