添加之后保存不了,提示插入失敗,在調(diào)試LAST_INSERT_ID的時(shí)候彈出id是0
$(function()?{ var?g_table?=?$("table.data");???//全局變量 var?init_data_url?=?"data.php?action=init_data_list";?????????? $.get(init_data_url,function(data)?{ var?row_items?=?$.parseJSON(data);???????//用json格式接收 //相當(dāng)于for(var?i=0;j=row_items.length;i<j;i++) for?(var?i?=?0;?i?<?row_items.length;?i++)?{??????????//不用for?in是因?yàn)樗闅v數(shù)組的同時(shí)遍歷里面的方法 var?data_dom?=?create_row(row_items[i]); g_table.append(data_dom); } }); function?delHandler()?{ var?data_id?=?$(this).attr("dataid"); var?meButton?=?$(this); $.post("data.php?action=del_row",{dataid:data_id},function(res)?{ if?(res?==?"ok")?{ $(meButton).parent().parent().remove();??????????//meButton不能用this代替,這里涉及到閉包,this不指向刪除按鈕 }?else?{ alert("刪除失敗..."); } }); } function?create_row(data_item)?{ var?row_obj?=?$("<tr></tr>"); for(var?k?in?data_item)?{?????//枚舉對(duì)象中的元素,K獲得每個(gè)屬性的名 // alert(typeof?k); if?("id"?!=?k)?{??????????????//相當(dāng)于k!=id,忽略id var?col_td?=?$("<td></td>"); col_td.html(data_item[k]); row_obj.append(col_td); } } var?editButton?=?$("<a?href='javascript:;'?class='optLink'>編輯 </a>"); editButton.click(delHandler); var?delButton?=?$("<a?href='javascript:;'?class='optLink'>刪除 </a>"); delButton.attr("dataid",data_item['id']);?????????//為什么這里id要加引號(hào)??????????? delButton.click(delHandler); var?opt_td?=?$("<td></td>"); row_obj.append(opt_td); opt_td.append(editButton); opt_td.append(delButton); return?row_obj; } $("#addBtn").click(function()?{ var?addRow?=?$("<tr></tr>"); for(var?i?=?0;?i?<?8?;?i++?)?{ var?col_td?=?$("<td><input?type='text'?class='txtField'></a></td>"); addRow.append(col_td); } var?col_opt?=?$("<td></td>"); var?confirmBtn?=?$("<a?href='javascript:;'?class='optLink'>確認(rèn) </a>"); confirmBtn.click(function()?{ var?currentRow?=?$(this).parent().parent(); var?input_filelds?=?currentRow.find("input"); var?post_fields?=?{}; for(var?i?=?0?;?i?<?input_filelds.length;?i++)?{ post_fields['col_'?+?i]?=?input_filelds[i].value; } $.post("data.php?action=add_row",post_fields,function(res)?{ if?(res?>?0)?{ post_fields['id']?=?res; var?postAddRow?=?create_row(post_fields); currentRow.replaceWhitn(postAddRow); }?else?{ alert("插入失敗..."); } }); }); var?canselBtn?=?$("<a?href='javascript:;'?class='optLink'>取消</a>"); canselBtn.click(function()?{ $(this).parent().parent().remove(); }); col_opt.append(confirmBtn); col_opt.append(canselBtn); addRow.append(col_opt); g_table.append(addRow); }); });
<?php? header('content-type:text/html;charset=utf8'); //header("Content-Type:?application/json;charset=utf-8");??????會(huì)出錯(cuò)?。?! $action?=?$_GET['action'];?????????//路由 switch($action)?{ case?'init_data_list': init_data_list(); break; case?'add_row'; add_row(); break; case?'del_row'; del_row(); break; case?'edit_row'; edit_row(); break; } function?init_data_list()?{ $sql?=?"SELECT?*?FROM?`et_data`";??????//注意,這里的``不是單引號(hào)!不然會(huì)輸出“bool[false]”,是Esc鍵下的"?`?",這里也可以不用這個(gè)括著 $query?=?query_sql($sql); while?($row?=?$query?->fetch_assoc())?{ $data[]?=?$row; } echo?json_encode($data); } function?del_row()?{ $dataid?=?$_POST['dataid'];?????//取到前面的id //拼一段sql語(yǔ)句 $sql?=?"DELETE?FROM?`et_data`?WHERE?`id`?=?"?.$dataid; if?(query_sql($sql))?{ echo?"ok"; }?else?{ echo?"db?error.."; } } function?add_row()?{ $sql?=?'INSERT?INTO?`et_data`?(?`c_a`,`c_b`,`c_c`,`c_d`,`c_e`,`c_f`,`c_g`,`c_h`?)?VALUES(?'; for($i?=?0?;?$i?<?8?;?$i++)?{ $sql?.='\''.$_POST['col_'?.?$i]?.?'?\',?';????//錯(cuò)誤寫(xiě)法?$sql?.?='\''.$_POST['col_'?.?$i]?.?'?\',?';?連接符與賦值符號(hào)之間不能空格 } $sql?=?trim($sql,",");????//去掉最后一個(gè)逗號(hào) $sql?.=?")"; if($res?=?query_sql($sql,"SELECT?LAST_INSERT_ID()?as?LD")){ $d?=?$res->fetch_assoc(); echo?$d['LD']; }?else?{ echo?"db?error?..."; } } function?query_sql()?{ $mysqli?=?new?mysqli("127.0.0.1","root","root","etable");??//連接數(shù)據(jù)庫(kù) $sqls?=?func_get_args(); foreach?($sqls?as?$s)?{ $query?=?$mysqli->query($s); } $mysqli->close(); return?$query; } ??>
其它頁(yè)面代碼和老師的一樣的。
代碼是理解了老師的之后照著寫(xiě)的,“保存”模塊代碼和老師的一模一樣還會(huì)出錯(cuò),有遇到同樣問(wèn)題的嗎?
2017-08-09
?$sql?=?trim($sql,", ");????//逗號(hào)后面有個(gè)空格
2017-03-09
對(duì)了,用詞不當(dāng),不是保存模塊,是按了“添加”之后寫(xiě)了數(shù)據(jù)按“確認(rèn)”插入數(shù)據(jù)出錯(cuò),
就是js文件那里的?$("#addBtn").click(function() {}函數(shù) 和PHP文件的function?add_row()?{}這個(gè)地方出錯(cuò)