這是index.php
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<form id="form1" name="form1" method="post" action="insert.php"> <!–用一個表單將變數用post傳遞至insert.php–>
name<input type="text" size="10" name="name" id="textfield" />
age <input type="text" size="10" name="age" id="textfield" />
<input type="submit" name="button" id="button" value="新增" />
</form>
這是insert.php
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?
$link =mysqli_connect("localhost","jacky","8834") or die("無法連接".mysql_error());
mysqli_select_db($link,"ryohin")or die ("無法選擇資料庫".mysql_error()); // 選擇資料庫
mysqli_query($link, 'SET CHARACTER SET utf8');
mysqli_query($link, "SET collation_connection = 'utf8_general_ci'");
$sql ="INSERT INTO test (name,age) VALUES ( NULL ,'$_POST[name]','$_POST[age]')"; //新增資料
mysqli_query($link,$sql)or die ("無法新增".mysql_error()); //執行sql語法
mysql_close($link); //關閉資料庫連結
header( "location:index.php"); //回index.php
?>
<pre class="c" name="code">$sql ="INSERT INTO test (name,age) VALUES ( NULL ,'$_POST[name]','$_POST[age]')"; //新增資料
改成
<pre class="c" name="code">$sql ="INSERT INTO test (name,age) VALUES ( '$_POST[name]','$_POST[age]')"; //新增資料
試看看
可是我想要讓id 會自動排序 1.2.3.4....
$sql ="INSERT INTO test (id,name,age) VALUES ( NULL ,'$_POST[name]','$_POST[age]')"; //新增資料
所以我加上了id
給你看我的網頁 http://line.ryohinlife.com/insert.php
加個雙引號試試看
<pre class="c" name="code">
$sql ="INSERT INTO test (id,name,age) VALUES ( NULL ,'$_POST["name"]','$_POST["age"]')"; //新增資料
加雙引號會有字串剖析的問題啦。
既然你用mysql_error()取得錯誤訊息,那錯誤訊息是什麼?
另外,id欄位如果設定是primary key,而且設定了auto_increment,在insert的時候可以忽略他,不需要再塞一個null給他。
沒跑出東西來哈哈
我那個id就是編號 1.2.3.4.5這樣一直排續下去
<pre class="c" name="code">
mysqli_query($link,$sql)or die ("無法新增".mysql_error());
改成
<pre class="c" name="code">
mysqli_query($link,$sql)or die ("無法新增".mysqli_error($link));
看看什麼情形。
沒東西XD
嚇死我了 .... $_POST 變數居然不經任何處理就直接插進字串中 ....
真是駭客好玩物 ...
補充剛剛費大公的部份.
要遞增的話,就是要設成 NOT NULL AUTO_INCREMENT PRIMARY KEY,
寫了段SQL Command.來測試一下.
<pre class="c" name="code">CREATE TABLE ithelp150118(
id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name CHAR(10) NOT NULL,
age TINYINT UNSIGNED NOT NULL
);
INSERT INTO ithelp150118(name, age) VALUES
('大毛', 12),
('二毛', 15),
('三毛', 16);
SELECT *
FROM ithelp150118
ORDER BY id;
+----+--------+-----+
| id | name | age |
+----+--------+-----+
| 1 | 大毛 | 12 |
| 2 | 二毛 | 15 |
| 3 | 三毛 | 16 |
+----+--------+-----+
3 rows in set (0.00 sec)
-- 要insert null 會發生何事呢?
INSERT INTO ithelp150118(id, name, age) VALUES
(NULL, '四毛', 18);
SELECT *
FROM ithelp150118
ORDER BY id;
+----+--------+-----+
| id | name | age |
+----+--------+-----+
| 1 | 大毛 | 12 |
| 2 | 二毛 | 15 |
| 3 | 三毛 | 16 |
| 4 | 四毛 | 18 |
+----+--------+-----+
4 rows in set (0.00 sec)
-- 一樣能insert 進去,也沒出現錯誤訊息,但是被修改了,還是遞增.
INSERT NULL,這樣方式並不建議,在其他資料庫產品,不一定會接受.
甚至MySQL版本不同,也可能會出現不同的反應.
這樣做,多打字,又增加了不確定性.
還是依照標準的作法比較好.
錯誤但沒出現錯誤訊息畫面,你 debug 模式有打開嗎?
檢查一下 error_reporting、log_errors 、display_errors 。
使用 ini_set 設定一下。