Notice: Undefined variable: logname in C:\xampp\htdocs\ProjectPHP\AddData.php on line 9
หมายความว่า ตัวแปรชื่อ logname ไม่เคยถูกกำหนดค่าให้ แล้วอยู่ๆ มีการเรียกใช้งาน
Deprecated: Function mysql_db_query() is deprecated in C:\xampp\htdocs\ProjectPHP\AddData.php on line 11
หมายความว่า Function mysql_db_query() เขาเลิกใช้กันแล้ว (ให้เลี่ยงใช้ mysql_select_db() และ mysql_query() แทน)
ซึ่งถ้าอ่านจากคำตอบของท่านต่างๆ ถ้าเข้าใจก็จะแก้ปัญหาได้
แต่ผมขอ re-write code เล็กน้อย เพื่อเป็นอีกหนึ่งแนวคิดครับ
Code: Select all
<?php
$host = 'localhost';
$user = 'root';
$passwd = 'reetreet';
$dbName = 'register';
$tblName = 'members';
// การรับค่าจาก HTML FORM เขียนแบบสั้น จะได้ชื่อตัวแปรที่จะเอาไปใช้งาน เป็นชื่อเดียวกับชื่อของ FIELD ใน HTML FORM
if (isset($_POST)) foreach ($_POST as $k => $v) {
${$k} = addslashes(stripcslashes(trim($v)));
}
// ไม่งั้นก็ต้องรับค่าเป็นรายตัวไป เช่น
$logname = $_POST['logname'];
$psswd = $_POST['psswd'];
$name = $_POST['name'];
// ...
// ... ทำจนครบ
mysql_connect($host, $user, $passwd) or die("ติดต่อ Host ไม่ได้");
mysql_select_db($dbName) or die("ติดต่อฐานข้อมูลไม่ได้");
mysql_query('SET NAMES tis620'); // สมัยนี้ควรใช้ UTF8 แล้วน้ะ
$checkDupSql = "SELECT * FROM `userinfo` WHERE `logname`=\"$logname\" LIMIT 1";
$resultSet = mysql_query($checkDupSql);
$num = mysql_num_rows($resultSet);
if ($num > 0) {
echo '<br />ชื่อผู้ใช้งานซ้ำ กรุณาใช้ชื่ออื่น ';
} else {
$sql = "INSERT INTO `userinfo` ("
. " `logname`, `pw`, `name`, `address`, `age`, "
. " `gender`, `ads`, `hobby`, `hobby2`, `hobby3`, `hobby4`, `email`"
. ") VALUES ("
. " \"$logname\", \"$psswd\", \"$name\", \"$address\", \"$age\", "
. " \"$gender\", \"$Uknow\", \"$hobby1\", \"$hobby2\", \"$hobby3\", "
. " \"$hobby4\", \"$email\" )";
// $sqlquery = mysql_db_query($dbname, $sql);
$result = @mysql_query($sql); // มี mysql_select_db($dbname) แล้วก็ไม่ต้องใช้ mysql_db_query()
if ($result) {
echo '<br />เพิ่มข้อมูลผู้ใช้ลงในฐานข้อมูลเรียบร้อยแล้ว ';
} else {
echo '<br />ระบบขัดข้อง หรือ มีข้อผิดพลาด และ MySQL กล่าวว่า: ' . mysql_error();
}
}
mysql_close();
?>
Note: เห็นมีประกาศตัวแปร $tblName = 'members'; แต่ใน code เห็น hardcode ชื่อตาราง "`userinfo`" จุดนี้ระวังด้วยน้ะครับ มือกับใจไม่ตรงกันหรือเปล่า
