T_Tทำไม่เป็นแล้วเรื่องห้ามใช้ชื่อuserซ้ำ Warning: mysql_num_rows(): supplied argument is not a valid
เหนื่อยใจจริงๆ
Date :
9 ก.ค. 2549 20:16:26
By :
โจผีนะ
ไม่ใช่แค่mysql_num_rowsนะครับคำสั่งอื่นก็ขึ้นเหมือนกัน
Date :
9 ก.ค. 2549 20:38:03
By :
knight
ก็แค่ตั้ง ID เป็น primary key พอหลังจากนั้นมีคนมาหมักมาชิกในเว็บเครื่องก็จะไม่ให้ ใช้แทรกคำสั่งนี้ในส่วนของการ insert ข้อมูล ยกโตอย่างเช่น
$sql = insert into member .........................;
$result = mysql_query(........) or die ("มีคนใช้ user นี้แล้วครับ");
ว่างๆ แวะไปชมเว็บผมน๊า BR Club
http://www.kobsoft.com
Date :
9 ก.ค. 2549 22:32:32
By :
-
ในกรณีที่มันขึ้นแบบนี้ แสดงว่า การ query ข้อมูลไม่สำเร็จครับลองนำ คำสั่ง sql ไป query ใน phpmyadmin ดูมันจะบอกว่ามีอะไรผิดพลาดนะครับ
select*from tb_member where username='$user_in' <<<< คำสั่งนี้แหละ
นิดนึงครับ คำสั่งข้างบนใช้ไม่ได้ เพราะมี $user_in อยู่ ให้ทำการ print คำสั่ง sql ออกมาก่อนแล้วค่อยนำไป query ใน phpmyadmin
อาจจะได้ select*from tb_member where username='somchai' แล้วเอาอันนี้ไป query ตามที่บอกดูละกันครับ
Date :
9 ก.ค. 2549 22:48:51
By :
Ngokung
T_Tไม่เข้าใจง่ะ กะลังหัดเขียนวันแรกงับ เขียนมาให้แค่นี้ งงจ้า
Date :
9 ก.ค. 2549 22:54:22
By :
knight
.......
<?
$host="localhost";
$username="";
$password="";
$db="db_member";
$tb="tb_member";
$connect= mysql_connect($host,$username,$password);
$sql="select*from tb_member where username='$user_in'";
print($sql); //<<<<<<<<<<<<<<<<<<<<<<<<<<< print อันนี้ออกมา แล้วลองเอามาบอกนะว่าได้อะไร
$result=mysql_query($sql);
if($result){ //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ลองเพิ่มนี่ด้วยละกัน
$row=mysql_num_rows($result);
} // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< มี ปีกกาเปิด อย่าลืมปิดด้วยนะ
if($row>0){
echo"Not add.";exit();
}else{
mysql_select_db($db) or die("Not select database");
$insert_table=mysql_query("INSERT INTO $tb (username,password,mail) values('$user_in', '$pass_in', '$mail_in')") or die ("Not insert data in Table");
echo"<br>Insert data success";
}
mysql_close($connect);
?>
ปล. แล้วดูด้วยนะว่า ชื่อตาราง ของเรามีชื่อ tb_member หรือเปล่า
ปล. (อีกที) อย่างที่บอก มัน query แล้ว เกิดข้อผิดพลาดขึ้น หรือไม่ก็ไม่มีข้อมูลน่ะ ได้ไม่ได้ยังไง ก็ลองมาบอกนะ
Date :
10 ก.ค. 2549 00:20:33
By :
Ngokung
<?
$host="localhost";
$username="";
$password="";
$db="db_member";
$tb="tb_member";
$connect= mysql_connect($host,$username,$password);
$sql="select*from $tb where username='$user_in'";
$db_query=mysql_db_query($db,$sql);//อันนี้
$num_rows=mysql_num_rows($db_query); //อันนี้
if($num_rows != 0) /* ตรวจสอบว่า Id นี้มีอยู่หรือยัง */
{
echo"<center><br>not found</center>";
exit();
}
else
{
mysql_select_db($db) or die("Not select database");
mysql_query("INSERT INTO $tb (username,password,mail) values('$user_in', '$pass_in', '$mail_in')") or die ("Not insert data in Table");
echo"<br>Insert data success";
}
mysql_close($connect);
?>
ได้ละครับ ลองเอาในบทเรียนกับในบอร์ดมาโปะๆกันมั่วๆ -*-
ขอบคุณทุกท่านมากเลย
Date :
10 ก.ค. 2549 00:58:11
By :
knight
หนีไปดูบอลมา อิอิ
Date :
10 ก.ค. 2549 04:10:50
By :
โจผีนะ
ความจริง ตามความคิดเห็นที่ 3 ดีกว่านะ
$sql = insert into member .........................;
$result = mysql_query(........) or die ("มีคนใช้ user นี้แล้วครับ");
แบบนี้อ่ะ เพราะว่า เช็คโดยใช้ mysql เลย ใช้เพียงคำสั่งเดียวเองไม่เปลืองด้วย ทำงานเร็วกว่า ปลอดภัยกว่า
เพราะความจริงการ เช็คก่อนว่า มี รหัสซ๊ำหรือเปล่า แล้วค่อยบันทึกลงไปนั้น อาจจะมีข้อผิดพลาดได้ ในกรณี ที่เกิดการที่มี query เข้ามาพร้อมกัน ซึ่ง หาก ต้องการ ใช้ echo"<center><br>not found</center>"; exit(); ตอนท้าย ก็สามารถทำได้ใน result = mysql_query(........) or die ("มีคนใช้ user นี้แล้วครับ"); โดยเปลี่ยนจากคำพูด ว่า มีคนใช้ user แล้วเป็น ฟังชั่นแทน แล้วเรียกอีกที เช่น
$chk=0;
$x=mysql_query(....) or ($chk=mysql_error_Duplicate());
if($chk==0){
echo "<center>success</center>";
}else{
echo"<center><br>not found</center>"; exit();
}
function mysql_error_Duplicate(){
$error_message=mysql_error();
//// ซึ่งคุณสามารถ เช็คจากค่า mysql error ได้ แล้วคุณสามารถเพิ่มค่า error ที่จะ return กลับไปได้ครับ
if(substr($error_message,0,9)=="Duplicate"){
return 1;
}else{
echo $error_message;
return 0;
}
}
วิธีดังกล่าวนี้จะช่วยให้ โปรแกรมกระชับ รันได้เร็วขึ้นกว่าเดิม
แนะนำเว๊ปด้วย นะ อิอิ http://www.pataramit.com/
Date :
10 ก.ค. 2549 04:30:27
By :
โจผีนะ
ขอเต็มๆแบบไม่ต้องใส่ ... ได้มะครับศึกษาได้2วันดูครึ่งๆกลางๆแล้วงงครับท่านทั้งหลาย
Date :
10 ก.ค. 2549 06:49:52
By :
knight
หลักการตรวจสอบชื่อซ้ำก็คือ เมื่อเราใส่ชื่อมาแล้วให้ไปตรวจสอบกับฐานข้อมูลว่ามีชื่อนี้อยู่แล้วหรือไม่ ถ้ามีก็แสดงว่าชื่อนี้ถูกใช้ไปแล้ว แค่นั้นเองครับ
คุณเคยอ่านข้อมูลออกจากฐานข้อมูลได้ยังไงก็ใช้วิธีนั้นแหละครับ ถ้าอ่านแล้วมีข้อมูลแสดงว่าชื่อนั้นซ้ำแล้วครับ
ผมไม่เก่ง MySQL เลยเขียนโค้ดให้ดูไม่ได้ แต่หลักการตรวจสอบมันก็มีอยู่แค่นี้เอง
Date :
13 ก.ค. 2549 20:25:57
By :
goragod
Load balance : Server 05