1

私は小さな温度プロトコルWebアプリを持っています。そこでは、度がページ上で調整され、データベースに保存されます。

動作しますが、再現できないユーザーから散発的なエラーが発生することがあります。

データベースにnullエントリがあり、その方法と理由がわからない場合があります。穴の列を「無効」にします(1日あたりいくつかの温度を選択できます)。

たとえば、div文字列でtempが選択されていない場合は、「NA」をdbに渡す必要があります。このバグは非常に回復力があり、他にどこに目を向けるべきかわかりません。

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とパケット損失に関係している可能性があることを想像することしかできません。

これらの厄介なnull文字列のdbへの挿入(破棄)を停止してエラーをスローし、ユーザーが再試行する必要があるようにするにはどうすればよいですか?空ではないため、!issetが機能しません

4

1 に答える 1

0

これはおそらく明白なことを述べていることに注意してください

ただし、DBの列にnull以外の値が必要であると指定して、挿入時にエラーをキャッチすることはできません。

この答えを見たことがありますか?

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

于 2012-06-26T15:50:48.930 に答える