PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

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

14 March 2014 By


ฟังก์ชันนี้สร้างขึ้น เพื่ออำนวยความสะดวก สำหรับคนที่ต้อง
เขียนโปรแกรม เชิ่อมต่อกับฐานข้อมูลบ่อยๆ เช่น
ดาวน์โหลดได้ที่ไฟล์ 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





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