พึ่งเคยใช้งานครั้งแรกโปรดอ่านที่นี่! howtouse!
x
  • Register
หางานด้าน IT อยู่เหรอ?

[php/mysql] เกี่ยวกับการตรวจสอบการซ้ำกันของข้อมูลที่ต้องการเพิ่ม

+1 vote

?[php/mysql]
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in E:\xampp\htdocs\coffeeshop2\admin\Category_action.php on line 52 

ผมต้องการ เพิ่มข้อมูลในตาราง แล้วผมใช้ mysql_num_rows() เพื่อดูว่ามีข้อมูลนี้อยู่รึป่าว ถ้ามันมากกว่าศูนย์ก็แสดงว่ามี แล้วจะไม่ทำการเพิ่ม
โค้ดที่เขียนก็ประมาณนี้ 
$sql = "select CatName from tbcategory where CatName = 'xxx'";
$result = mysql_query($sql);
$cntRow = mysql_num_rows($result);
if($cnt>0) ไม่เพิ่มข้อมูล else เพิ่มข้อมูล ;

อะไรประมาณนี้แล้วมันขึ้น warning ตามด้านบน ไม่ทราบว่ามันจะมีปัญหาอะไรรึป่าวครับ แต่ก้เพิ่มข้อมูลเข้าไปได้นะครับ

ถามเมื่อ Apr 17, 2012 in PHP & MySQL & Ajax โดย bank (106 คะแนน)
   

5 Answers

+1 vote

เวลาผมตรวจผมจะไม่นับแถว ผมจะใช้
$sql = "select CatName from tbcategory where CatName = 'xxx'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result ));
if($row){ อย่างนี้ครับ

ตอบเมื่อ Apr 17, 2012 โดย anonymous
+1 vote
เชค query ดูอีกทีครับคิดว่ามัน query ไม่ได้เลย return boolean ออกมา

 

ปล. tag ด้วยตอนตั้งกระทู้ด้วยนะครับ เผื่อคนอื่นติดจะได้มาหาเจอ
ตอบเมื่อ Apr 17, 2012 โดย Thanabodee Charoenpi (666 คะแนน)
+1 vote
ให้ SQL Server นับให้เลยสิครับ

$sql = "SELECT COUNT(*) AS cnt FROM tbcategory WHERE CatName = 'xxx'; ";
$result = mysql_query($sql);
$r = mysql_fetch_object($result);

if ($r->cnt > 0)
{
....
ตอบเมื่อ Apr 17, 2012 โดย K. Chaowanawatee (565 คะแนน)
edited Apr 17, 2012 โดย K. Chaowanawatee
+2 votes

ผมว่ามัน น่าจะผิดมาตั้งแต่ $result แล้วแหละมั้งครับ

ตอนที่ $result = mysql_query($sql);

ให้ check ด้วย

if ($result)

{

         $cntRow = mysql_num_rows($result);

 

         if ($cntRow > 0)

         ..... อะไรก็ว่าไป

}

else

{

       //...echo error ออกมาดูครับ

}

ตอบเมื่อ Apr 18, 2012 โดย phanithanj (1,139 คะแนน)
+1 vote

warning น่าจะมีปัญหานะครับ

แต่ไม่ใช่ปัญหาในการ insert มันก็เลย insert ได้ปกติ

แต่ insert อาจจะซ้ำได้

ลองแก้โดยใส่ mysql_connect() เข้าไปใน mysql_query() ดูครับ

เพราะ warning เกี่ยวกับ parameter ที่ใส่เข้าไป

แต่ปกติก็ Query ได้ เพราะมันจะใช้ connection ล่าสุดครับ

example

 


<?php
 
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);
 
$result = mysql_query("SELECT * FROM table1", $link);
$num_rows = mysql_num_rows($result);
 
echo "$num_rows Rows\n";
 
?>
ตอบเมื่อ Apr 19, 2012 โดย Teva Mahaveera (272 คะแนน)

Related questions

+2 votes
3 คำตอบ
+4 votes
2 คำตอบ
527 views ถามเมื่อ Apr 30, 2012 in PHP & MySQL & Ajax โดย NeTWol2Kz (135 คะแนน)
+1 vote
1 คำตอบ
838 views ถามเมื่อ Apr 22, 2012 in PHP & MySQL & Ajax โดย chockchaisu (103 คะแนน)
+1 vote
2 คำตอบ
370 views ถามเมื่อ Oct 10, 2013 in PHP & MySQL & Ajax โดย Nattawat Marsh (103 คะแนน)
...