我有一个温度协议网络应用程序,其中度数在页面上调整并保存在数据库中。
它可以正常工作,但有时会发生用户无法重现的零星错误!
有时数据库中有空条目,我不知道如何以及为什么。它使孔排“空”(每天可选择几个温度)。
如果是在div字符串中没有选择temp“NA”应该传递给db。这个bug很有弹性,我不知道还有什么可以转向。
Ajax通过单击箭头
来增加值$(".arrow_up").die('click');
$(".arrow_up").live('click',function() {
var value = $("#temp_"+this.id).html();
if (value=="NA") {value=$("#istemp_"+this.id).html()}
var newValue = parseInt(value)+ 1;
将值转移到服务器
$(document).ready(function() {
$('#save').die('click');
$("#save").live('click',function() {
var tempA=$("#temp_itemA").html();
var tempB=$("#temp_itemB").html();
PHP必须存储
我看它是不是空的,也不是字符串null被移交了。最后一个抛出错误。
<?php
if((!isset($_GET['tempA'])) || (!isset($_GET['tempB'])) || ($_GET['tempA']!='null')
{
echo "values are missing";
}
else
{
error_reporting(E_ALL);
try {
$dbh = new PDO('sqlite:/var/www/xxx.sqlite');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$date=date("Y-m-d",time());
$sql = "SELECT * FROM tableTemp WHERE date='".$date."'";
$result = $dbh->query($sql);
foreach($result as $row) {
$id = $row['id'];
}
if (!empty($id)) {
$sql = "UPDATE tableTemp SET tempA='".$_GET['tempA']."',tempB='".$_GET['tempB']"'";
$result = $dbh->query($sql);
}
else {
$sql = "INSERT INTO tableTemp ('tempA','tempB')";
$result = $dbh->query($sql)
?>
我的意思是,这很简单。我只能想象传输错误可能与WIFI和数据包丢失有关。
如何停止将这些讨厌的空字符串插入(丢弃)到数据库并抛出错误,以便用户必须再次尝试?我的!isset不起作用,因为它不是空的
答案 0 :(得分:0)
请注意,这可能是明显的
但是你能不能规定数据库中的列需要一个非null的值然后捕获插入错误
你看到了这个答案吗?