10/10/2018, 00:10

Kiểm tra Username bằng PHP

Mình có đoạn code Ktr User với user trong SQL. Mình thử đăng ký với user có sẵn trong SQL thì nó vẫn cho đăng ký . Và nó cứ báo Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in F:Web_ServerAppServwwwThien_WebsiteDang_Ky.ph p on line 332. Các bạn xem giúp mình đoạn code này với, có chỗ nào chưa đúng ko? Mình cảm ơn

Code:
$username = addslashes( $_POST['username'] );
$password = addslashes( $_POST['password'] );
$confirm_pass = addslashes( $_POST['verify_pass'] );
$email = addslashes( $_POST['email'] );

$conn = mysql_connect("{$db_host}", "{$db_username}", "{$db_password}") or die("Không thể kết nối database");
mysql_select_db("{$db_name}") or die("Không thể chọn database");
$sql = "SELECT * FROM members WHERE name= '".$_POST["Username"]."'";
$result = mysql_query($sql, $conn) ;
$i = mysql_num_rows($result);


if($i>0)
{
mysql_close($conn);
echo "Username này đã có rồi. Xin vui lòng nhập Username khác";


}
else
{
// Tiến hành tạo tài khoản
@mysql_query("INSERT INTO members (username, password, email) VALUES ('{$username}', '{$password}', '{$email}')");

// Thông báo hoàn tất việc tạo tài khoản
print "Tài khoản {$username} đã được tạo. <a onclick='javascript:win.close()'><span style='color:blue'>Nhấp vào đây để trở lại Trang Chủ</span></a>";
echo "<meta http-equiv='refresh' content='3;url=Trang_Chu.html'>";
}
duyuoc viết 02:19 ngày 10/10/2018
Hình như nó có phân biệt chữ hoa và chữ thường mà bạn .Bạn thử kiểm tra lại xem thế nào nhé !
dohoangthien viết 02:23 ngày 10/10/2018
Mình sửa Username thành username rồi mà vẫn ko được, nó báo lỗi dòng 332 hoài( $i = mysql_num_rows($result); ). Còn chỗ nào nữa ko bạn
tiendx2002 viết 02:15 ngày 10/10/2018
Được gửi bởi dohoangthien
Mình sửa Username thành username rồi mà vẫn ko được, nó báo lỗi dòng 332 hoài( $i = mysql_num_rows($result); ). Còn chỗ nào nữa ko bạn
Vấn đề mấu chốt là cấu trúc DB Của bạn thế nào? Bạn thử echo ra câu query và apply bằng tay vào chỗ PHPMYADMIN hoặc MySQL Query Browser xem.
Thân mến.
temp2 viết 02:17 ngày 10/10/2018
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
cái này thông báo lỗi do câu truy vấn của bạn ko hợp lệ (thường do lỗi syntax)
herofit viết 02:12 ngày 10/10/2018
Được gửi bởi temp2
cái này thông báo lỗi do câu truy vấn của bạn ko hợp lệ (thường do lỗi syntax)
lỗi syntax là đúng rồi nhưng cụ thể ở đây
tham số của hàm
mysql_num_rows() là kiểu resource báo lỗi này có nghĩa bạn tham số hàm này sai kiểu-> có thể nó không có gia trị trả lại của câu lệnh sql -> bạn xem lại code xem nhỡ sai chữ hoa chữ thường lên tham số truyền cho hàm đó sai. Mình không có thời gian dò code cho bạn bạn thử lại nhé
jiSh@n viết 02:13 ngày 10/10/2018
Code:
$username = addslashes( $_POST['username'] );
....
$sql = "SELECT * FROM members WHERE name= '".$_POST["Username"]."'";
Chưa rõ nhưng nhiêu đây đủ đoán câu query cho ra null, mysql_num_rows() báo lỗi là phải.

P/S:
Code:
$conn = mysql_connect("{$db_host}", "{$db_username}", "{$db_password}") or die("Không thể kết nối database");
mysql_select_db("{$db_name}") or die("Không thể chọn database");
Lần đầu tiên thấy có người truyền tham số kiểu này
hieutv viết 02:26 ngày 10/10/2018
$username = addslashes( $_POST['username'] );
....
$sql = "SELECT * FROM members WHERE name='$username'";
Pasolpi viết 02:17 ngày 10/10/2018
Được gửi bởi jiSh@n
Code:
$username = addslashes( $_POST['username'] );
....
$sql = "SELECT * FROM members WHERE name= '".$_POST["Username"]."'";
Chưa rõ nhưng nhiêu đây đủ đoán câu query cho ra null, mysql_num_rows() báo lỗi là phải.

P/S:
Code:
$conn = mysql_connect("{$db_host}", "{$db_username}", "{$db_password}") or die("Không thể kết nối database");
mysql_select_db("{$db_name}") or die("Không thể chọn database");
Lần đầu tiên thấy có người truyền tham số kiểu này


1. Về câu mysql_num_rows($result) : trong đó khi query và result trả về null nên khi bạn gọi hàm mysql_num_rows(null) thì php sẽ warning. Muốn fix thì sửa lại là if($result)
{

// call mysql_num_rows($result);

}else
{
// call
}
2. Phân biệt hoa thường khi dùng $_POST[element]

3. Dùng biến và đặt dấu {} là hợp lý. Vì trong trừong hợp biến $a đặt kế kí tự khác thì nên dùng để phân biệt. Ví dụ echo "$abc" : vậy cái này phải sửa là echo "{$abc}"
jiSh@n viết 02:10 ngày 10/10/2018
Được gửi bởi Pasolpi
3. Dùng biến và đặt dấu {} là hợp lý. Vì trong trừong hợp biến $a đặt kế kí tự khác thì nên dùng để phân biệt. Ví dụ echo "$abc" : vậy cái này phải sửa là echo "{$abc}"
Nhìn kỹ chỗ tôi quote chưa vậy
echo "$abc"; echo "{$abc}"; echo $abc; kết quả có gì khác nhau ko chứ tốc độ khác nhau là chắc rồi đấy

Có bao giờ bác xài kiểu này ko mysql_connect("{$db_host}", "{$db_username}", "{$db_password}")
Bài liên quan
0