我用这个HTML代码捕获日期
Start Time <br>
<input **strong text**name="start_time" type="datetime-local" id="id_start_time" onchange="Fenable('id_end_time,id_closed')" ><br>
End Time <br>
我使用火鸟
将记录保存到数据库时出错
SQLSTATE[HY000]:常规错误:-303 动态 SQL 错误 SQL 错误代码 = 字符串"2018-09-28T20:20"中的 -303 转换错误
如何将输入转换为合法字符串? 谁能帮忙?
该错误表示您正在尝试将字符串插入TIMESTAMP
列,并且该字符串未按 Firebird 的预期格式设置。Firebird支持多种字符串格式,但没有一种包含T
。
确保插入的值的格式为2018-09-28 20:20
(格式为yyyy-MM-dd HH:mm[:ss[.fffff]]
(,或者插入了合适的时间戳数据类型。
顺便说一句:该错误还表明您正在使用字符串串联来创建查询,而不是参数化查询。连接查询字符串是不安全的,因为它会使 SQL 注入处于开放状态。
Mark Rotteveel -感谢您的建议。 我使用绑定参数方法来保存数据。
我使用以下JavaScript代码解决了它
function clk_submit(){
//document.getElementById("loader").style.display = "inline";
var str = document.getElementById("id_start_time"(.value;
var s_time = str.replace("T", " "(;
var str = document.getElementById("id_end_time").value;
var e_time = str.replace("T", " ");
var xdata = {
bpr_pid:document.getElementById("id_product_id").value,
bpr_bno:document.getElementById("id_batch_no").value,
bpr_stageid:document.getElementById("id_stage").value,
bpr_cpid:"0",
bpr_bwt:document.getElementById("id_batch_weight").value,
bpr_status_id:"0",
bpr_stime:s_time,
bpr_etime:e_time,
bpr_closed:document.getElementById("id_closed").value,
bpr_uid:"<?php echo $_SESSION["userid"] ?>",
bpr_rem:"",
bpr_inbid:"0",
bpr_fcid:document.getElementById("id_formula_code").value,
bpr_seq_code_id:document.getElementById("id_sequence_code").value
};
var myJSON = JSON.stringify(xdata);
var xmlhttp;
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
// document.getElementById("loader").style.display = "none";
if (this.responseText==1) {
alert( "Record Saved Successfully");
} else {
alert(this.responseText);
}
}
};
xmlhttp.open("POST", "json_save_to_db.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("x=" + myJSON);
}
现在完美了。