PDA

View Full Version : Kết nối vào database nhưng không thêm được bản ghi



linh040800
28-06-2010, 11:28
Chào các bạn, mình connect được với database( tblTest có fiel là : IDname,Name) nhưng nó hiện ra thông báo


So mau tin them vao 0

và đây là các file của tớ:
File kết nối: dbcon.php



<?php
$link = mysql_connect ("localhost", "root", "")
or die ("Could not connect to MySQL Database");
mysql_select_db("han", $link);
?>

File nhập dữ liệu từ bàn phím:


<body>
<form name="frmPHP" method="post"
action="doinsert.php"
onsubmit="return checkInput();">
<tr>
<td align="left" class="content-sm"><b>
Please enter ID and Name
</b></td>
</tr>
<tr>
<td align="left" >ID:</td>
</tr>
<tr>
<td align="left">
<input type="text" name="txtID"
size="25" maxlength="3" class="textbox">
</td>
</tr>
<tr>
<td align="left" >Name:</td>
</tr>
<tr>
<td align="left" >
<input type="text" name="txtName"
size="25" maxlength="50" class="textbox">
</td>
</tr>
<tr>
<td align="left" valign="top"> <br>
<input type="submit"
value="Submit" class="button">
<input type="reset" value="Reset" class="button">
</td>
</tr>
</form>
</body>

FIle doinsert.php



<BODY>
<h3>Them mau tin</h3>
<?php
$affectrow=0;
require("dbcon.php");
$sql="insert into tblTest(IDName,Name) ";
$sql .=" values('".$txtID."','".$txtName."')";
$result = mysql_query($sql,$link);
if($result)
$affectrow=mysql_affected_rows();
mysql_close($link);
?>
So mau tin them vao <?php echo $affectrow?>
</BODY>

các bạn giúp đỡ tớ với.
Mình Cảm ơn các bạn trước.

honnhienh
28-06-2010, 11:32
không đọc được hết code bác dài quá. nhưng connect được hog thêm được thì coi cái quền cảu bác có được thêm hg? hay nó chỉ cho bac view thôi.

linh040800
28-06-2010, 11:39
1. code thứ nhất chỉ để connect. CÒn code thứ hai chỉ là nhập dữ liệu từ bàn phím. Theo mình nghĩ có thể mình sai chỗ nào của đoạn code thứ 3 mà tớ up lên.
2. Nó thông báo thế nhưng tớ làm cho chắc nên vào database kiểm tra tblTest thì vẫn chỉ có 3 bản ghi như cũ.
Các bạn coi giùm tớ với.

honnhienh
28-06-2010, 19:12
$sql="insert into tblTest(IDName,Name) ";
$sql .=" values('".$txtID."','".$txtName."')";


đoạn này tui hog hiểu nha. bạn phải lấy giá trị trước chứ $txtID = $_POST['txtID'].

rootkit
28-06-2010, 19:21
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');

/* Update records */
mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
printf ("Updated records: %d\n", mysql_affected_rows());
mysql_query("COMMIT");
?>

linh040800
29-06-2010, 00:06
Mình sửa được rồi đó là tên database là "han" chứ không phải là "Test".
Nhưng sửa xong thì nó thông báo


So mau tin them vao 1


Nhưng vào database : "han" thì bản ghi được thêm nhưng nó các 2 fied lại là trống . Mà lúc thiết kế CSDL mình không đặt thuộc tính NUll cho các Fied.
Có lẽ mình nghĩ lệnh lấy giá trị này :


$sql="insert into tblTest(IDName,Name) ";
$sql .=" values('".$txtID."','".$txtName."')";

Có vấn đề trong việc gán : IDName = txtID và Name = txtName
Các bạn xem lại giùm tớ với.

cayriver
29-06-2010, 02:37
Đề nghị nên đọc sách thật kỹ, làm đi làm lại vẫn không được thì mới hỏi. Chứ cái gì cũng hỏi thì không hay lắm.
$txtID= $_POST['txtName'];
$txtID= $_POST['txtID'];

linh040800
29-06-2010, 03:02
Tớ post bài giờ này thì cậu biết tớ đâu có phải là lười code hay lười đọc sách.
Và mình đọc một số sách và làm ra rồi( chạy ngon lành rồi). Vấn đề ở đây là sách tớ đọc sách bản php < v5 nên gõ code chạy thì.. :D . Còn từ PHP V5 trở đi có chút thay đổi (EX : $HTTP_POST_VARS bằng $_POST['***'].
Code của nó đây:


$sql="insert into tblTest(IDName,Name) ";
$sql .=" values('".$_POST['txtID']."','".$_POST['txtName']."')";

Nhưng mình thấy không hiểu dấu chấm trong cậu lệnh thứ 2 .
Bạn nào biết nói giùm tớ luôn với, sách tớ đọc không nói đến vấn đề này.

lenggiauit
29-06-2010, 05:11
Trong php dấu . dùng để nối string

meoconnho
29-06-2010, 08:29
$sql="insert into tblTest(IDName,Name) ";
$sql .=" values('".$_POST['txtID']."','".$_POST['txtName']."')";

Mình không hiểu tại sao lấy giá trị từ $_POST['txtID'] gán cho IDName chứ đâu có làm gì đâu mà nối chuỗi lại làm gì. Nên tớ thấy dấu chấm bên trong value có lẽ nó có nhiệm vụ khác.
Và điều thứ hai là : còn dấu chấm ở trước dấu bằng ( = ) đầu câu nữa .

nhockien1986
29-06-2010, 10:00
thế thì sữa lại câu lệnh insert đi thế nay coi thử có dc ko:
$sql="insert into tblTest(IDName,Name) values('".$_POST['txtID']."','".$_POST['txtName']."')";
cần gì mà nối chuỗi làm gì.

thuyduongcd
29-06-2010, 10:39
Nhưng mình thấy không hiểu dấu chấm trong cậu lệnh thứ 2 .
Bạn nào biết nói giùm tớ luôn với, sách tớ đọc không nói đến vấn đề này.
Đọc sách nào mà không nói đến vấn đề này? ".=" là một toán tử cơ bản của PHP.
$a.=$b tương đương $a=$a.$b
Sách nào mà không co cái này thì nên vứt sọt rác đi.
http://w3schools.com/php/php_operators.asp


Có vấn đề trong việc gán : IDName = txtID và Name = txtName
Tự nghĩ xem txtID, txtName lấy từ đâu ra sẽ có câu trả lời.

linh040800
29-06-2010, 11:36
Tự nghĩ xem txtID, txtName lấy từ đâu ra sẽ có câu trả lời.
Đêm qua,tớ đã đọc các bản khác nhau về php và giải quyết được vấn đề, Bạn thuyduongcd không đọc hết bài viết làm gì mà kêu om sòm lên thế.

Vấn đề ở đây là sách tớ đọc sách bản php < v5 nên gõ code chạy thì.. :D . Còn từ PHP V5 trở đi có chút thay đổi (EX : $HTTP_POST_VARS bằng $_POST['***'].

Còn điều nữa là cuốn của ông HK viết quá sơ sài.
Nhưng dù sao cũng cảm ơn các bạn và cảm ơn bạn thuyduongcd đã nhắc nhở về cuốn sách.

vvthong
30-06-2010, 15:55
PHP 4 trở xuống dùng $_HTTP_POST_VARS còn PHP 5 thì dùng $_POST cho tiện :D

Bác đọc sách kỹ tí đi, có sách nào mà không có đoạn chỉ các insert. Cái quan trọng để nó insert là phải có dữ liệu, bác cho nó 2 cái biến chưa được định nghĩa (mang dữ liệu NULL) thì sao nó insert được. :D