PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum


ฟังก์ชั่น php เรียกใช้งาน สร้าง คำสั่ง sql อย่างง่าย

14 March 2014 By
php sql


ฟังก์ชันนี้สร้างขึ้น เพื่ออำนวยความสะดวก สำหรับคนที่ต้อง
เขียนโปรแกรม เชิ่อมต่อกับฐานข้อมูลบ่อยๆ เช่น
ดาวน์โหลดได้ที่ไฟล์ http://www.ninenik.com/note/gen_sql.txt
<?php
function gen_sql($table,$where="",$type,$act_update=0,$act_insert=0,$act_delete=0){
	$result = mysql_query("SHOW COLUMNS FROM $table");
	if(!$result){
		echo 'Could not run query: ' . mysql_error();
		exit;
	}
	$g_type=$type;
	$g_type2=$type;
	$g_type3=$type;
	$arr_table_field=array();
	$arr_table_type=array();
	if(mysql_num_rows($result) > 0) {
		while ($row = mysql_fetch_assoc($result)) {
			if(count($row)>0){
				foreach($row as $k_field=>$v_field){
					if($k_field=="Field"){
						$arr_table_field[]=$v_field;
						//echo $v_field."<br>";	
					}
					if($k_field=="Type"){
//						echo $v_field."<br>";
						$arr_table_type[]=$v_field;
					}
				}
			}
//			print_r($row);
		}
		if($act_update==1){
			$str_update="UPDATE $table SET "."<br>";
			$num_field=count($arr_table_field);
			$i_field=0;
			if($num_field>0){
				foreach($arr_table_field  as $k_field=>$v_field){
					$i_field++;
					if(preg_match('/^int/', $arr_table_type[$k_field], $matches, PREG_OFFSET_CAPTURE)){
						$type="trim(\$".$g_type.")";
					}else	if(preg_match('/^varchar/', $arr_table_type[$k_field], $matches, PREG_OFFSET_CAPTURE)){
						$type="addslashes(\$".$g_type.")";
					}else	if(preg_match('/^tinyint/', $arr_table_type[$k_field], $matches, PREG_OFFSET_CAPTURE)){
						$type="trim(\$".$g_type.")";
					}else	if(preg_match('/^datetime/', $arr_table_type[$k_field], $matches, PREG_OFFSET_CAPTURE)){
						$type="date('Y-m-d H:i:s')";
					}else{
						$type="\$$g_type";
					}
					if($i_field==$num_field){
						$str_update.="   ".$v_field."='\".$type.\"'"."<br>";
					}else{
						$str_update.="   ".$v_field."='\".$type.\"',"."<br>";
					}
				}
				$str_update.="WHERE $where='\".\$$g_type.\"'"."<br>";
			}
			
			echo $str_update;
		}
		
		
		if($act_insert==1){
			echo "<br><br>";
			$str_insert="INSERT INTO $table (<br>";	
			$num_field=count($arr_table_field);
			$i_field=0;
			if($num_field>0){
				$str_insert_field="";
				$str_insert_value="";
				foreach($arr_table_field  as $k_field=>$v_field){
					$i_field++;
					if(preg_match('/^int/', $arr_table_type[$k_field], $matches, PREG_OFFSET_CAPTURE)){
						$type="trim(\$".$g_type2.")";
					}else	if(preg_match('/^varchar/', $arr_table_type[$k_field], $matches, PREG_OFFSET_CAPTURE)){
						$type="addslashes(\$".$g_type2.")";
					}else	if(preg_match('/^tinyint/', $arr_table_type[$k_field], $matches, PREG_OFFSET_CAPTURE)){
						$type="trim(\$".$g_type2.")";
					}else	if(preg_match('/^datetime/', $arr_table_type[$k_field], $matches, PREG_OFFSET_CAPTURE)){
						$type="date('Y-m-d H:i:s')";
					}else{
						$type="\$$g_type2";
					}
					if($i_field==$num_field){
						$str_insert_field.="   ".$v_field."<br>";
						$str_insert_value.="   '\".$type.\"'"."<br>";
					}else{
						$str_insert_field.="   ".$v_field.",<br>";
						$str_insert_value.="   '\".$type.\"',"."<br>";
					}
				}
				$str_insert.=$str_insert_field;
				$str_insert.=") VALUES (<br>";
				$str_insert.=$str_insert_value;
				$str_insert.=")<br>";
			}		
			echo $str_insert;
		}
		
		if($act_delete==1){
			echo "<br><br>";
			$str_delete="DELETE FROM $table WHERE $where='\".\$$g_type3.\"'"."<br>";
			echo $str_delete;
		}
		
//		print_r($arr_table_type);
	}	
}
?>
คำสั่ง 
 
การ update การ insert และ delete 
 
จากประสบการณ์ พบว่า หลายครั้ง เราจะต้องการทราบ
ฟิลด์ต่างๆ ในตารางที่เราต้องการใช้งาน และส่วนใหญ่ ก็ต้องเปิด
ไปมา และดูเป็นอะไรที่จำเจ จึงได้มีไอเดีย สร้างชุดฟังก์ชันนี้ขึ้นมา
 
หลักการทำงานของฟังก์ชันคือ แสดงฟิลด์ทั้งหมดของตาราง ในชุดคำสั่ง
sql เราสามารถตัดรายการฟิลด์ที่ไม่ต้องการได้
 
ตัวอย่างตาราง ประกอบคำอธิบาย
 
CREATE TABLE `test_salary` (
  `t_id` int(11) NOT NULL auto_increment,
  `t_name` varchar(10) NOT NULL,
  `t_position` int(11) NOT NULL,
  `t_salary` int(11) NOT NULL,
  PRIMARY KEY  (`t_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
 
 
การใช้งาน
 
gen_sql("ชื่อตาราง",
"ฟิลด์หลัก ที่ต้องการ เช่น primary key",
"ค่าตัวแปรที่ต้องการ เบื้องต้น_POST['ddd'] ",
"แสดง UPDATE ค่า 0 / 1",
"แสดง INSERT ค่า 0 / 1",
"แสดง DELETE ค่า 0 / 1");
 
ตัวอย่างการเรียกใช้งานแบบที่ 1
// gen_sql("test_salary","t_id","_POST['ddd']",1,1,1);
 
ชุดคำสั่ง sql ผลลัพธ์ที่แสดง
 
UPDATE test_salary SET 
   t_id='".trim($_POST['dddd'])."',
   t_name='".addslashes($_POST['dddd'])."',
   t_position='".trim($_POST['dddd'])."',
   t_salary='".trim($_POST['dddd'])."'
WHERE t_id='".$_POST['dddd']."'


INSERT INTO test_salary (
   t_id,
   t_name,
   t_position,
   t_salary
) VALUES (
   '".trim($_POST['dddd'])."',
   '".addslashes($_POST['dddd'])."',
   '".trim($_POST['dddd'])."',
   '".trim($_POST['dddd'])."'
)


DELETE FROM test_salary WHERE t_id='".$_POST['dddd']."'
 
ตัวอย่างการเรียกใช้งานแบบที่ 1
// gen_sql("test_salary","t_id","_GET['ddd']",1,1,1);
 
ชุดคำสั่ง sql ผลลัพธ์ที่แสดง
 
UPDATE test_salary SET 
   t_id='".trim($_GET['dddd'])."',
   t_name='".addslashes($_GET['dddd'])."',
   t_position='".trim($_GET['dddd'])."',
   t_salary='".trim($_GET['dddd'])."'
WHERE t_id='".$_GET['dddd']."'


INSERT INTO test_salary (
   t_id,
   t_name,
   t_position,
   t_salary
) VALUES (
   '".trim($_GET['dddd'])."',
   '".addslashes($_GET['dddd'])."',
   '".trim($_GET['dddd'])."',
   '".trim($_GET['dddd'])."'
)


DELETE FROM test_salary WHERE t_id='".$_GET['dddd']."'






Tags:: sql php






อย่าลืมกด Like กด Share เป็นกำลังใจ ในการสร้างบทความใหม่ๆ น่ะครับ


URL สำหรับอ้างอิง