Berikut ini adalah metode yang dicoba, diuji, dan terbukti untuk memeriksa apakah ada baris.
(Beberapa di antaranya saya gunakan sendiri, atau pernah digunakan di masa lalu).
Sunting: Saya membuat kesalahan sebelumnya dalam sintaks saya di mana saya menggunakan mysqli_query()
dua kali. Silakan berkonsultasi dengan revisi.
yaitu:
if (!mysqli_query($con,$query))
yang seharusnya hanya dibaca sebagai if (!$query)
.
- Saya minta maaf karena mengabaikan kesalahan itu.
Catatan tambahan: Keduanya '".$var."'
dan '$var'
melakukan hal yang sama. Anda dapat menggunakan salah satunya, keduanya adalah sintaks yang valid.
Berikut adalah dua kueri yang diedit:
$query = mysqli_query($con, "SELECT * FROM emails WHERE email='".$email."'");
if (!$query)
{
die('Error: ' . mysqli_error($con));
}
if(mysqli_num_rows($query) > 0){
echo "email already exists";
}else{
// do something
}
dan dalam kasus Anda:
$query = mysqli_query($dbl, "SELECT * FROM `tblUser` WHERE email='".$email."'");
if (!$query)
{
die('Error: ' . mysqli_error($dbl));
}
if(mysqli_num_rows($query) > 0){
echo "email already exists";
}else{
// do something
}
Anda juga dapat menggunakan mysqli_
dengan pernyataan siap
metode:
$query = "SELECT `email` FROM `tblUser` WHERE email=?";
if ($stmt = $dbl->prepare($query)){
$stmt->bind_param("s", $email);
if($stmt->execute()){
$stmt->store_result();
$email_check= "";
$stmt->bind_result($email_check);
$stmt->fetch();
if ($stmt->num_rows == 1){
echo "That Email already exists.";
exit;
}
}
}
Atau metode PDO dengan pernyataan siap :
<?php
$email = $_POST['email'];
$mysql_hostname = 'xxx';
$mysql_username = 'xxx';
$mysql_password = 'xxx';
$mysql_dbname = 'xxx';
try {
$conn= new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
exit( $e->getMessage() );
}
// assuming a named submit button
if(isset($_POST['submit']))
{
try {
$stmt = $conn->prepare('SELECT `email` FROM `tblUser` WHERE email = ?');
$stmt->bindParam(1, $_POST['email']);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
}
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
if($stmt->rowCount() > 0){
echo "The record exists!";
} else {
echo "The record is non-existant.";
}
}
?>
- Pernyataan yang disiapkan paling baik digunakan untuk membantu melindungi dari injeksi SQL.
N.B.:
Saat menangani formulir dan larik POST seperti yang digunakan/diuraikan di atas, pastikan bahwa larik POST berisi nilai, bahwa metode POST digunakan untuk formulir dan mencocokkan atribut bernama untuk input.
- FYI:Bentuk default ke metode GET jika tidak diinstruksikan secara eksplisit.
Catatan:<input type = "text" name = "var">
- $_POST['var']
cocok. $_POST['Var']
tidak cocok.
- Array POST peka huruf besar-kecil.
Konsultasikan:
Kesalahan saat memeriksa referensi:
- http://php.net/manual/en/function. error-reporting.php
- http://php.net/manual/en/mysqli.error. php
- http://php.net/manual/en/pdo. penanganan kesalahan.php
Harap perhatikan bahwa API MySQL tidak bercampur, jika Anda mungkin mengunjungi T&J ini dan Anda menggunakan mysql_
untuk terhubung dengan (dan bertanya dengan).
- Anda harus menggunakan yang sama untuk menghubungkan ke kueri.
Konsultasikan hal berikut tentang ini:
Jika Anda menggunakan mysql_
API dan tidak punya pilihan untuk bekerja dengannya, lalu lihat T&J berikut di Stack:
mysql_*
fungsi tidak digunakan lagi dan akan dihapus dari rilis PHP mendatang.
- Saatnya memasuki abad ke-21.
Anda juga dapat menambahkan batasan UNIK ke (a) baris.
Referensi:
- http://dev.mysql. com/doc/refman/5.7/en/constraint-primary-key.html
- http://dev.mysql.com/ doc/refman/5.7/en/alter-table.html
- Bagaimana cara memeriksa apakah suatu nilai sudah ada untuk menghindari duplikat?
- Bagaimana menambahkan kunci unik ke tabel yang ada (dengan baris yang tidak unik)