添加之后保存不了,提示插入失敗,在調試LAST_INSERT_ID的時候彈出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格式接收
//相當于for(var?i=0;j=row_items.length;i<j;i++)
for?(var?i?=?0;?i?<?row_items.length;?i++)?{??????????//不用for?in是因為它遍歷數組的同時遍歷里面的方法
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)?{?????//枚舉對象中的元素,K獲得每個屬性的名
// alert(typeof?k);
if?("id"?!=?k)?{??????????????//相當于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要加引號???????????
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'>確認 </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");??????會出錯?。?!
$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`";??????//注意,這里的``不是單引號!不然會輸出“bool[false]”,是Esc鍵下的"?`?",這里也可以不用這個括著
$query?=?query_sql($sql);
while?($row?=?$query?->fetch_assoc())?{
$data[]?=?$row;
}
echo?json_encode($data);
}
function?del_row()?{
$dataid?=?$_POST['dataid'];?????//取到前面的id
//拼一段sql語句
$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]?.?'?\',?';????//錯誤寫法?$sql?.?='\''.$_POST['col_'?.?$i]?.?'?\',?';?連接符與賦值符號之間不能空格
}
$sql?=?trim($sql,",");????//去掉最后一個逗號
$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");??//連接數據庫
$sqls?=?func_get_args();
foreach?($sqls?as?$s)?{
$query?=?$mysqli->query($s);
}
$mysqli->close();
return?$query;
}
??>其它頁面代碼和老師的一樣的。
代碼是理解了老師的之后照著寫的,“保存”模塊代碼和老師的一模一樣還會出錯,有遇到同樣問題的嗎?
2017-08-09
?$sql?=?trim($sql,", ");????//逗號后面有個空格
2017-03-09
對了,用詞不當,不是保存模塊,是按了“添加”之后寫了數據按“確認”插入數據出錯,
就是js文件那里的?$("#addBtn").click(function() {}函數 和PHP文件的function?add_row()?{}這個地方出錯