Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Kiểm tra xem tên người dùng đã tồn tại với MySQLi chưa

Có một số sự cố. Không sử dụng mysql_real_escape_string vì bạn đang làm việc với mysqli_* . Sử dụng mysqli_real_escape_string thay vì. Nhưng tốt hơn hãy sử dụng mysqli_stmt_bind_param bởi vì bạn đang làm việc với các báo cáo đã chuẩn bị. Và nếu bạn làm việc với COUNT(*) bạn luôn nhận được 1 hàng.

$pseudo = $_POST['pseudo'];
$mail = $_POST['mail'];

$query = "SELECT * FROM t_people WHERE PEO_PSEUDO = ? OR PEO_MAIL = ? LIMIT 1";
$stmt = mysqli_prepare($sql, $query);
mysqli_stmt_bind_param($stmt, 'ss', $pseudo, $mail);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$numRows = mysqli_stmt_num_rows($stmt);
mysqli_stmt_close($stmt);

Với COUNT(*) (hiệu quả hơn) nó giống như sau:

$query = "SELECT COUNT(*) as numrows FROM t_people WHERE PEO_PSEUDO = ? OR PEO_MAIL = ?";
...
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $numRows);
mysqli_stmt_fetch($stmt);
mysqli_stmt_close($stmt);

// work with $numRows


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao Magento không thể cứu khách hàng sau khi tạo ID?

  2. Trình kích hoạt MySQL PHP - Làm thế nào để chuyển các biến để kích hoạt?

  3. Chỉ trả lại các hàng có giá trị tối đa nhỏ hơn giá trị đã chỉ định

  4. Làm cách nào để sử dụng COALESCE () trong mệnh đề WHERE một cách tối ưu?

  5. Tại sao lựa chọn này cho ví dụ cập nhật hoạt động?