1

我有一个小的温度协议网络应用程序,可以在页面上调整度数并保存在数据库中。

它可以工作,但有时用户会出现我无法重现的零星错误!

有时数据库中有空条目,我不知道如何以及为什么。它将孔排“归零”(每天可以选择几个温度)。

例如,如果在 div 字符串“NA”中没有选择任何温度,则应将其交给数据库。这个虫子太有弹性了,我不知道还能去哪里。

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 不工作,因为它不是空的

4

1 回答 1

0

请注意,这可能是在说明显而易见的

但是你能不能规定数据库中的列需要一个不为空的值,然后在插入时捕获错误

你看过这个答案吗?

https://stackoverflow.com/a/2103256/1479565

于 2012-06-26T15:50:48.930 回答