Page 1 of 1

สอบถามเกี่ยวกับ php mysql insert random code ค่ะ

Posted: 20/12/2012 10:28 am
by cherrynaja
สอบถามค่ะ คือต้องการที่จะ gen code ที่มีตัวอักษรกับตัวเลขปนกัน 12 หลัก จำนวนครั้งละ 2 แสนตัวค่ะ

แล้วทีนี้เขียน code ขึ้นมาใช้งานได้ค่ะ แต่พอจะ gen อีก 2 แสน ครั้งที่ 2 ก็ไม่ได้แล้วค่ะ มันขึ้น error ตอน run script ค่ะ

โดย code ที่ต้องการ gen เพิ่มเข้าไปใน table ต้องการที่จะ check ให้ไม่ซ้ำกับ code ที่มีอยู่แล้วด้วยค่ะ

ซึ่ง script ที่เขียนขึ้นมาจะเป็นการ query code ทั้งหมดที่นี่เข้าไปเก็บไว้ใน array ก่อนค่ะ แล้วค่อยมาเช็ค code ใน array อีกทีว่าซ้ำไหม

ถ้าไม่ถึงค่อยให้ insert เพิ่มใน table

Code: Select all

		$sql = "SELECT * FROM gen_code";
		$results = mysql_query($sql);
		$code_num = array();
		$i = 0;

		foreach ($results as $row){
			array_push($code_num,$row['code']);
			$i++;
		}
		
		$j = 1;
		while ($j <= 200000)
		{
			$code = substr(str_shuffle('abcdeghkmnpqsuvwxyz23456789'),0,12);
			
			if (in_array($code, $code_num))
			{
				echo "fail\n";
			}
			else
			{
				mysql_query("INSERT INTO gen_code(code) VALUES ('$code')");
				$j++;
			}
				
		}
ลอง check ดูแล้วนะคะว่ามันเกิด error ตรงส่วนนี้ค่ะ

Code: Select all

		foreach ($results as $row){
			array_push($code_num,$row['code']);
			$i++;
		}
ส่วนที่ query code ที่มีใน table เข้ามาเก็บใน array ค่ะ

เหมือนกับว่าถ้ามีข้อมูลในตารางแล้วเยอะๆ เวลา query มามันจะรับไม่ได้อ่าค่ะ

ทีนี้เลยลอง gen code ทีเดียว 5 แสนตัว มันหยุดอยู่แค่ 4 แสนกว่าค่ะ แล้วก็ไปทำระบบล่มด้วย เพราะเหมือนระบบได้สำรองข้อมูลเพื่อรอไว้ค่ะ



เลยอยากถามผู้รู้ค่ะ ว่าพอมีวิธีไหนที่ทำให้สามารถ gen code ลงไปแบบนี้ได้ทีละเยอะๆ โดยไม่ก่อปัญหาให้ระบบไหมคะ

ได้ไปดูเรื่อง rand() ของ mysql มาด้วยค่ะ ไม่ทราบว่าจะใช้ได้ไหม? ใช้แทนการ gen โดย php เลยได้รึป่าว?

แล้วถ้าใช้ได้ต้องเขียนแบบไหนคะ เพราะงงมากเลยค่ะ

หรือว่าพอมีวิธีอื่นอีกคะ อย่าง ajax หรือ jquery (แต่ส่วนตัวแอบคิดว่ามันก็ใช้การ query เหมือนกันอาจก่อปัญหาได้เช่นกันรึป่าวคะ 55)


ใครพอรู้ช่วยทีนะคะ ขอบคุณมากค่า ^^

Re: สอบถามเกี่ยวกับ php mysql insert random code ค่ะ

Posted: 21/12/2012 11:47 am
by mindphp
foreach มันใช้กับ array ครับ
เอา result มา foreach :evil: :evil:

Code: Select all

$resultset = array();
while($row = mysql_fetch_array($results)) {
  $resultset[] = $row;
}

// แล้วค่อน loop foreach จาก $resultset
foreach ($resultset as $result){
 // .....
} 

Re: สอบถามเกี่ยวกับ php mysql insert random code ค่ะ

Posted: 08/10/2013 5:44 pm
by penlike