Rumah > Soal Jawab > teks badan
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 $sqlResult
为true
. 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粉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; }
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; }