شرح صفوف ومحتوى الفقرة
استعلم من جدول users عبر استعلام محضر SELECT id FROM users WHERE email = :email LIMIT 1 لإظهار رسالة واضحة إذا كان البريد مسجلاً مسبقاً.
- استخدم
$stmt->fetchColumn()للتحقق مما إذا كان الاستعلام يرجع معرف مستخدم موجود. - حتى مع هذا الفحص المسبق، احتفظ بقيد
UNIQUEفي الجدول لمنع تضارب الطلبات المتزامنة. - التزم دائماً بالمعاملات المربوطة (
:email) لمنع حقن SQL.
ترجع fetchColumn() معرف السجل المطابق، مما ينبه التطبيق بأن البريد مسجل بالفعل.
PHP
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec('CREATE TABLE users (id INTEGER PRIMARY KEY, email TEXT UNIQUE)');
$pdo->exec("INSERT INTO users (email) VALUES ('[email protected]')");
$stmt = $pdo->prepare('SELECT id FROM users WHERE email = :email LIMIT 1');
$stmt->execute(['email' => '[email protected]']);
$exists = (bool) $stmt->fetchColumn();
echo $exists ? "Email already registered!\n" : "Email available.\n";