P H P  V I E T  N A M  P O R T A L
Xin chào, Khách. Vui lòng đăng nhập hoặc đăng ký tài khoản.
Bạn đã quên email kích hoạt?






     Trang chủ | Download | Tự học PHP | Kho tư liệu | Diễn đàn
Trang: [1] 2 3
  In  
This topic has not yet been rated!
You have not rated this topic. Select a rating:
Tác giảChủ đề: Thực hiện các truy vấn thêm, xóa, sửa bản ghi thông qua câu lệnh SQL  (Đã đọc 89579 lần)
cmxq
Administrator
PHP Intermediate
*****
Posts: 1330


Xem hồ sơ Email
« on: January 25, 2007, 01:40:54 AM »

Trong bài viết này, tôi sử dụng MySQL chạy trên nền máy chủ localhost, người sử dụng có username là mysql_user, mật khẩu là mysql_password.
CSDL có tên là CMXQ_Forum, trong đó có một bảng là CMXQ_Users để lưu thông tin về những thành viên của diễn đàn. Bảng CMXQ_Users có các trường sau:
User_ID: Autonumber.// mã số của người dùng
User_Name: Varchar [20] // tên truy cập của người dùng
User_Pass: Varchar[64] //mật khẩu của người dùng
User_IP: Varchar [15] //Địa chỉ IP của người dùng.
User_Post: Number // Số bài viết của người dùng.

Bây giờ tôi sẽ tiến hành một số thao tác thêm, sửa và xóa dữ liệu trên bảng đó. Xin xem lại bài Căn bản về SQL.
Để thực thi một câu lệnh SQL bất kỳ trong PHP tác động lên MySQL, ta dùng hàm mysql_query (chuỗi_câu_lệnh_SQL)
I. Thêm một bản ghi vào bảng.
Ví dụ tôi muốn chèn thêm một người sử dụng có User_Name là "CMXQ", User_Pass là "123456", User_Post=0 ta làm như sau:
<?
$sql = "INSERT INTO CMXQ_Users (User_Name, User_Pass) VALUES ("CMXQ","123456",0);
mysql_query ($sql);
?>
II. Xóa một bản ghi khỏi bảng.
Trong trường hợp này, ta sử dụng câu lệnh SQL DELETE FROM:
VD: tôi muốn xóa khỏi bảng CMXQ_Users tất cả những người có User_Name="CMXQ":
<?
$sql = "DELETE FROM CMXQ_Users WHERE User_Name='CMXQ'";
mysql_query ($sql);
?>
III. Sửa thông tin của bản ghi trong bảng.
Trong trường hợp này, tôi sử dụng cú pháp UPDATE:
VD: Tôi muốn cập nhật địa chỉ IP cho người có User_Name="CMXQ" với địa chỉ IP được lấy từ trình duyệt:
<?
$sql = "UPDATE CMXQ_Users SET User_IP ='" . $_SERVER['REMOTE_ADDR'] . "' Where User_Name='CMXQ'";
mysql_query ($sql);
?>
(Biến $_SERVER['REMOTE_ADDR'] chứa địa chỉ IP của trình duyệt. Xin xem lại ở bài trước)
« Last Edit: March 17, 2007, 03:03:28 AM bởi Admin » Logged

Trở về phpvn.org
socola
PHP Intermediate
*
Posts: 31


Xem hồ sơ
« Trả lời #1 on: March 20, 2008, 10:09:19 AM »

admin giúp tui cái này với

Tôi có CSDL tên User, trong đó có bảng contact có các trường sau:
username: Varchar[50]
mobile: Varchar[11]

Trường hợp 1:

<?
   /*connect*/
      mysql_connect("localhost","root","");
      mysql_select_db("user");
   /******/

   $mobile ="0983000000";
   
   $sql= "INSERT INTO contact(username,mobile)
         VALUES('Nguyen Van A',$mobile)";
   mysql_query($sql);
?>
mở CSDL ra coi thì trong field mobile bị mất số 0 đầu tiên???<-- cho hỏi làm sao để nó lưu đúng?

Trường hợp 2:

<?
   /*connect*/
      mysql_connect("localhost","root","");
      mysql_select_db("user");
   /******/
   
   $name = "Nguyen Van A";
   $mobile ="0983000000";
   
   $sql= "INSERT INTO contact(username,mobile)
         VALUES($name,$mobile)";
   mysql_query($sql);
?>
Trường hợp này thì ko lưu được gì cả. Huh
Logged
phpnubie
Global Moderator
PHP Intermediate
*****
Posts: 444


Xem hồ sơ
« Trả lời #2 on: March 20, 2008, 10:29:42 AM »

Quote
Tôi có CSDL tên User, trong đó có bảng contact có các trường sau:
username: Varchar[50]
mobile: Varchar[11]
Bạn thử thay mobile: vachar thành int xem sao.
Logged
socola
PHP Intermediate
*
Posts: 31


Xem hồ sơ
« Trả lời #3 on: March 20, 2008, 11:10:36 AM »

vẫn ko được Huh
Logged
phpnubie
Global Moderator
PHP Intermediate
*****
Posts: 444


Xem hồ sơ
« Trả lời #4 on: March 20, 2008, 12:02:18 PM »

type int hay bigint có thể nhận dãy số từ -2147483648 đến 2147483647
bigint từ -9223372036854775808 bis 9223372036854775807 . Tuy nhiên dãy số từ 0 đến 4294967295 cho int, 0 đến 18446744073709551615 cho bigint thí số 0 còn được gọi là số không đầu nên sẽ không hiện trong bảng. muốn làm có số 0 bạn thử làm lại như sau : mobile:varchar(20) -> cho 20 ký tự
« Last Edit: March 20, 2008, 02:26:42 PM bởi phpnubie » Logged
socola
PHP Intermediate
*
Posts: 31


Xem hồ sơ
« Trả lời #5 on: March 21, 2008, 06:07:33 AM »

Hic, ko được.
Vấn đề là nếu để như thế này:
   $sql= "INSERT INTO contact(username,mobile)
         VALUES('Nguyen Van A','0983000000')";
   mysql_query($sql);

thì vẫn ok --> có số 0 đầu tiên
nhưng nếu lấy từ biến $mobile thì nó bị mất số 0.

Hic, ai chỉ dùm tui với, cả trường hợp 2 nữa, trường hợp 2 thì ko lưu được gì, cả biến $name và $mobile. Huh
Logged
crazy_jay
PHP Intermediate
*
Posts: 83

vu_best@yahoo.de vu_best
Xem hồ sơ Email
« Trả lời #6 on: March 21, 2008, 06:45:13 AM »

bạn thử làm thế này :   
 $sql= "INSERT INTO contact(username,mobile)
         VALUES('$name','$mobile')";

đặt 2 cái var vào trong '  ', mình nghĩ chắc là được
Logged
cmxq
Administrator
PHP Intermediate
*****
Posts: 1330


Xem hồ sơ Email
« Trả lời #7 on: March 21, 2008, 06:57:17 AM »

Lý do rất đơn giản: đó là nó cứ nghĩ biến $mobile chứa một số chứ không phải một chuỗi. Vì vậy, khi gán giá trị cho biến này, hãy chắc chắn giá trị đó có kiểu chuỗi.
Logged

Trở về phpvn.org
socola
PHP Intermediate
*
Posts: 31


Xem hồ sơ
« Trả lời #8 on: March 21, 2008, 08:37:05 AM »

Thanks very much.
Hic, 1 vấn đề đơn giản mà phải mất 1 ngày 1 đêm. Kiểu này chắc đúng như admin nói, phải 10 năm nữa mới có thể tạm ổn.
Logged
vncore
PHP Starter
*
Posts: 19


Xem hồ sơ Email
« Trả lời #9 on: March 26, 2008, 02:52:15 AM »

@cmxq: mật khẩu của người dùng mình nghĩ là nên đặt kiểu char Undecided
Logged
dnhpro
PHP Starter
*
Posts: 10


Xem hồ sơ Email
« Trả lời #10 on: August 28, 2008, 06:13:33 PM »

cái phần sữa thông tin bạn có thể nói rõ hoặc cho demo cụ thể đc ko? mình làm nó bị lỗi hoài. thanks
Logged
buoncuoinhi
PHP Intermediate
*
Posts: 36


Xem hồ sơ
« Trả lời #11 on: November 04, 2008, 12:16:14 AM »

Cho tui hỏi làm thế nào khi mình kick vào nút sửa thì nó sẽ chuyển đển trang edit.php. Trang này sẽ load dữ liệu lên textbox theo các trường tương ứng. Khi mình sửa chữa giá trị trong các trường này, ấn Update thì dữ liệu đó sẽ update cho mình! Giúp với!
Logged

P/s: HOK biết mình hỏi, tớ hỏi thỳ đừng chê tớ NGU. Mình nghĩ mình cũng có thể học được PHP.
YM: buoncuoinhi7
saothienta
PHP Intermediate
*
Posts: 1016

darkmovies.4vn.in


Xem hồ sơ WWW Email
« Trả lời #12 on: November 05, 2008, 06:38:16 PM »

ặc thì cũng dùng update thôi và các mã nhận diện chiến là $_POST['tên của đối tượng form tương ứng'];

ví dụ bạn có 1 ô tên là txtID:
th2i tron gtrang edit sẽ dùng:
kết nối server cái này tự làm nhá.
sau đó chạy dòng này:
mysql_query("Update `tên bảng chứa` Set `tên cột chứa giá trị ID`='".$_POST['txtID']."';",biến của connect);
mysql_close(biến của connect);
xong đã sửa Lưu ý nên có thêm where để dò cho đúng cái hàng muốn sửa nữa còn lệnh tr6n chỉ là căn bản nó sẽ sửa cả cái bản đó luôn nếu ko có where chỉ cho nó biết sửa dòng nào.
Logged

Hãy nắm tay cùng đưa ngày coder VN đi lên.
Cùng tạo nên chỗ đứng cho VN
Hãy bắt đầu điều đó tại đây:darkmovies.4vn.in bộ 4rom mã nguồn mở đầu tiên của VN
phufpt
PHP Starter
*
Posts: 1


Xem hồ sơ Email
« Trả lời #13 on: December 26, 2008, 08:52:33 AM »

Mình mới học nhưng mình nghĩ la câu trên lệnh gán của bạn sai.
chữa lại:
TH1:
$sql= "INSERT INTO contact(username,mobile)
         VALUES('Nguyen Van A',".$mobile.")";
TH2:
$sql= "INSERT INTO contact(username,mobile)
         VALUES(".$name.",".$mobile.")";

Logged
thaiph
PHP Starter
*
Posts: 2


Xem hồ sơ
« Trả lời #14 on: December 28, 2008, 01:12:21 AM »

Quote
Mình mới học nhưng mình nghĩ la câu trên lệnh gán của bạn sai.
chữa lại:
TH1:
$sql= "INSERT INTO contact(username,mobile)
         VALUES('Nguyen Van A',".$mobile.")";
TH2:
$sql= "INSERT INTO contact(username,mobile)
         VALUES(".$name.",".$mobile.")";

Note : Các bạn nên nhớ Insert, Update in Mysql với object là char or varchar cần bao bởi dấu ' '.

Fix :
    $sql= "INSERT INTO contact(username,mobile)
         VALUES('Nguyen Van A',".$mobile.")";
    Should be
     $sql= "INSERT INTO contact(username,mobile)
         VALUES('Nguyen Van A','".$mobile."')";  // add comma '  before "
    So, TH2 should be
    $sql= "INSERT INTO contact(username,mobile)
         VALUES('".$name."','".$mobile."')";

Good luck
Logged
Trang: [1] 2 3
  In  
 
Chuyển sang:  

Powered by SMF 1.1.15 | SMF © 2006-2007, Simple Machines . Modified by PHPVN Members