ช่วยดู code mysqli หน่อยครับ
ปัญหาคือ บนเครื่องที่บ้าน มันไม่มีปัญหาอะไรเลยครับ แต่พออัพบน เซอเวอร์ กับฟ้อง Warning: mysqli_error() expects exactly 1 parameter, 0 given in /home/prateep/domains/prateep.ac.th/public_html/includes/function.php on line 7 สอบถามเรื่อง ตัวแปร register_globals กับทาง เซอร์เวอร์ มันก็เป็น On แล้ว ไม่ทราบว่าเป็นอะไรครับ เซอร์เวอร์ใช้ Linux ครับ
ส่วนนี้เป็นไฟล์ชื่อ connect_db.php
<?php
$mysqli; // ตัวแปรสำหรับเชื่อมต่อฐานข้อมูล
$HostName = "localhost"; // ชื่อเครื่อง Server ที่ให้บริการ
$UserName = "username"; // ชื่อผู้ใช้ สำหรับติดต่อ MySQL
$Password = "password123"; // รหัสผ่าน สำหรับติดต่อ MySQL
$Database = "mydatabase"; // ชื่อฐานข้อมูล
$port="3306";
// ฟังก์ชันสำหรับเชื่อมต่อฐานข้อมูล
function conn_db_func(){
global $mysqli;
global $HostName;
global $UserName;
global $Password;
global $Database;
$mysqli = mysqli_connect($HostName, $UserName, $Password, $Database,$port) or die("ไม่สามารถติดต่อกับ MySQL ได้");
mysqli_query($mysqli, "SET NAMES utf-8");
}
// ฟังก์ชันสำหรับปิดการเชื่อมต่อฐานข้อมูล
function close_db_func(){
global $mysqli;
mysqli_close($mysqli);
}
?>
ส่วนนี้เป็นไฟล์ function.php
<? require("connect_db.php");
// ฟังก์ชันสำหรับ Select ข้อมูล
function select_data_func($sqlSelect){ // รับพารามิเตอร์เป็นคำสั่ง SQL สำหรับดึงข้อมูล
global $mysqli; // เรียกใช้ตัวแปร mysqli ที่ประกาศไว้ในไฟล์ "connect_db.php"
conn_db_func(); // เรียกใช้ฟังก์ชัน conn_db_func() ที่อยู่ในไฟล์ "connect_db.php"
$result = mysqli_query($mysqli, $sqlSelect) or die(mysqli_error()); // คิวรีฐานข้อมูล
close_db_func(); // เรียกใช้ฟังก์ชัน close_db_func() ที่อยู่ในไฟล์ "connect_db.php"
return $result; // คืนค่าเป็น Object
}
// ฟังก์ชันสำหรับ Insert, Update และ Delete
function manage_data_func($sql){
global $mysqli;
conn_db_func();
$result = mysqli_query($mysqli, $sql) or die(mysqli_error());
$affect = mysqli_affected_rows($mysqli); // จำนวนแถวที่มีการเปลี่ยนแปลง
close_db_func();
return $affect; // คืนค่าเป็นจำนวนแถวที่มีการเปลี่ยนแปลง, ค่า Default เป็น 0
}
// ฟังก์ชันสำหรับตรวจสอบข้อมูลก่อนที่จะ Insert
function insert_data_func($sqlSelect, $sqlInsert){
global $mysqli;
conn_db_func();
$result_se = mysqli_query($mysqli, $sqlSelect) or die(mysqli_error()); // Select ข้อมูลว่าซ้ำหรือไม่
$num_row = mysqli_num_rows($result_se); // จำนวนแถวที่คิวรีได้
if($num_row == 0){ // ถ้าไม่ซ้ำ จึงจะ Insert ข้อมูลได้
$result_inst = mysqli_query($mysqli, $sqlInsert) or die(mysqli_error());
$affect = mysqli_affected_rows($mysqli);
}
close_db_func();
return $affect;
}
// ฟังก์ชันสำหรับ Insert โดยคืนค่า ID ที่ Insert ด้วย
function insert_returnid_func($sqlInsert, $sqlSelect){
global $mysqli;
conn_db_func();
$result = mysqli_query($mysqli, $sqlInsert) or die(mysqli_error()); // Insert ข้อมูลก่อน
$affect = mysqli_affected_rows($mysqli);
if($affect > 0){ // ถ้า Insert ข้อมูลได้ จะคิวรี ID ของข้อมูลนั้น
$result = mysqli_query($mysqli, $sqlSelect) or die(mysqli_error());
close_db_func();
return $result; // คืนค่าเป็น ID ของข้อมูลที่ Insert
}
}
// ฟังก์ชันสำหรับตรวจสอบข้อมูลที่จะ Delete
function delete_data_func($ID, $table, $field){ // คืนค่าเป็น true หรือ false เท่านั้น
global $mysqli;
conn_db_func();
$sqlSelect = "SELECT * FROM $table WHERE $field = '$ID' ";
$result = mysqli_query($mysqli, $sqlSelect) or die(mysqli_error()); // ตรวจสอบข้อมูลที่จะลบ
$num_rows = mysqli_num_rows($result);
if($num_rows == 0){
close_db_func();
return true;
}elseif($num_rows > 0 ){ // ถ้ามีข้อมูล ก็จะลบข้อมูลนั้น
$sqlDelete = "DELETE FROM $table WHERE $field = '$ID' ";
$result = mysqli_query($mysqli, $sqlDelete) or die(mysqli_error());
$affect = mysqli_affected_rows($mysqli);
close_db_func();
if($affect > 0){ return true; }else{ return false; }
}else{
return false;
}
}
// ฟังก์ชันสำหรับกำหนด ID โดยอ่านค่าตัวเลขจากไฟล์
function gen_id_func($filename, $prefix){
$fp = fopen($filename, "r"); // เปิดไฟล์เพื่ออ่าน
$count = fgets($fp) + 1; // นำค่ามาบวก
fclose($fp);
// ID มีความยาวจำนวน 6 ตัวอักษร, 2 ตัวแรก เป็นตัวอักษร ส่วน 4 ตัวหลังเป็นตัวเลข เช่น BP0001
switch(strlen($count)){
case 1 : $id = $prefix."000".$count; break;
case 2 : $id = $prefix."00".$count; break;
case 3 : $id = $prefix."0".$count; break;
case 4 : $id = $prefix.$count; break;
}
$fp = fopen($filename, "w"); // เปิดไฟล์เพื่อเขียน
fwrite($fp, $count);
fclose($fp);
return $id;
}
// ฟังก์ชันสำหรับแปลงวันที่จากฐานข้อมูล (Date, DateTime, TimeStamp) มาแสดงแบบไทย
function convert_date_func($strDate, $mode, $type){
$month_key = array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
$month_full = array("มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม");
$month_short = array("ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค.");
$dYear = substr($strDate,0,4); // รูปแบบ Y-m-d H:i:s
$dMonth = substr($strDate,5,2);
$dDay = substr($strDate,8,2);
if($dYear < 2550){ $dYear += 543; }
switch($mode){
case 'full': // วันที่ 12 เดือนสิงหาคม พ.ศ. 2550
$thMonth = array_combine($month_key, $month_full);
$new_date = "วันที่ ".$dDay." เดือน".$thMonth[$dMonth]." พ.ศ.".$dYear ;
break;
case 'short': // 12 ส.ค. 50
$thMonth = array_combine($month_key, $month_short);
$new_date = $dDay." ".$thMonth[$dMonth]." ". substr($dYear,2,2);
break;
case 'digit': // 12/08/2550
$new_date = $dDay."/".$dMonth."/".$dYear;
break;
}
if($type == "datetime"){ // กรณีระบุเวลา
$dTime = substr($strDate,11,8);
$new_date = $new_date." ".$dTime." น.";
}
return $new_date;
}
// ฟังก์ชันสำหรับแสดงผลการทำงาน
function msg_func($title, $msg){
$result = "<table class='cssTable' align='center'>";
$result .= "<tr class='cssTitle'><td>".$title."</td></tr>";
$result .= "<tr class='cssContent cssFontMsg'><td align='center'>".$msg."</table>";
return $result;
}
// แปลงตัวเลขเดือน เป็นชื่อเดือนภาษาไทย
function thaimonth_func($dMonth){
switch($dMonth){
case '01' : $tMonth = "มกราคม" ; break;
case '02' : $tMonth = "กุมภาพันธ์" ; break;
case '03' : $tMonth = "มีนาคม" ; break;
case '04' : $tMonth = "เมษายน" ; break;
case '05' : $tMonth = "พฤษภาคม" ; break;
case '06' : $tMonth = "มิถุนายน" ; break;
case '07' : $tMonth = "กรกฎาคม" ; break;
case '08' : $tMonth = "สิงหาคม" ; break;
case '09' : $tMonth = "กันยายน" ; break;
case '10' : $tMonth = "ตุลาคม" ; break;
case '11' : $tMonth = "พฤศจิกายน" ; break;
case '12' : $tMonth = "ธันวาคม" ; break;
}
return $tMonth;
}
// ตัวแปรอะเรย์เก็บรายชื่อจังหวัด
$province = array(1 => "กระบี่", "กรุงเทพมหานคร", "กาญจนบุรี", "กาฬสินธุ์", "กำแพงเพชร", "ขอนแก่น", "จันทบุรี", "ฉะเชิงเทรา", "ชลบุรี", "ชัยนาท", "ชัยภูมิ", "ชุมพร", "เชียงราย", "เชียงใหม่", "ตรัง", "ตราด", "ตาก", "นครนายก", "นครปฐม", "นครพนม", "นครราชสีมา", "นครศรีธรรมราช", "นครสวรรค์", "นนทบุรี", "นราธิวาส", "น่าน", "บุรีรัมย์", "ปทุมธานี", "ประจวบคีรีขันธ์", "ปราจีนบุรี", "ปัตตานี", "พระนครศรีอยุธยา", "พะเยา", "พังงา", "พัทลุง", "พิจิตร", "พิษณุโลก", "เพชรบุรี", "เพชรบูรณ์", "แพร่", "ภูเก็ต", "มหาสารคาม", "มุกดาหาร", "แม่ฮ่องสอน", "ยโสธร", "ยะลา", "ร้อยเอ็ด", "ระนอง", "ระยอง", "ราชบุรี", "ลพบุรี", "ลำปาง", "ลำพูน", "เลย", "ศรีษะเกษ", "สกลนคร", "สงขลา", "สตูล", "สมุทรปราการ", "สมุทรสงคราม", "สมุทรสาคร", "สระแก้ว", "สระบุรี", "สิงห์บุรี", "สุโขทัย", "สุพรรณบุรี", "สุราษฏร์ธานี", "สุรินทร์", "หนองคาย", "หนองบัวลำพู", "อ่างทอง", "อำนาจเจริญ", "อุดรธานี", "อุตรดิสถ์", "อุทัยธานี", "อุบลราชธานี"); ?>
ลองตรวจสอบหลังจาก connect แล้ว ว่า $mysqli เป็น object หรือไม่
ลองใช้
@mysqli_query($mysqli, "SET NAMES utf8");
และการตรวจสอบ ว่า $mysqli เป็น object ยังงัย
$result = mysqli_query($mysqli, $sqlSelect) or die(mysqli_error()); // คิวรีฐานข้อมูล
และผมเปลี่ยน
$mysqli = mysqli_connect($HostName, $UserName, $Password, $Database,$port) or die("ไม่สามารถติดต่อกับ MySQL ได้");
@mysqli_query($mysqli, "SET NAMES utf8");
ที่อยู่ในไฟล์ connect_db แล้วด้วยครับ
$db = new mysqli($HostName, $UserName, $Password, $Database,$port);
/* check connection */
if (mysqli_connect_errno()) {
die("Unable to connect!");
}
เขาทำมาให้ใ้ช้เป็น object ก็น่าจะใช้ให้เต็มประสิทธิภาพหน่อยนะคับถ้าเขียนธรรมดา แนะนำเขียน mysql ธรรมดาดีกว่านะ