0

私はPHPの知識がほとんどないAndroid開発者です。Google プッシュ通知を使用して正常に動作するアプリがあります。私が抱えている問題は、同じ電話が Google に登録されたときに、Google からの regID を DB に保存する必要があることです。アプリを電話に 4 回プッシュすると、DB に 1 台の電話を指す 4 行が表示されます。

DB をチェックして、特定の regID のレコードが存在するかどうかを確認しようとしています。これを行うために sqlsrv_has_rows() を使用しようとしています。以下のコードはコンパイルされますが、レコードが存在するかどうかに関係なくレコードを挿入しません。

誰が問題が何であるかを見ることができますか?

前もって感謝します、

マット

public function storeUser($companyid, $gcm_regid) {

    $strCompanyID = strval($companyid);
    $strRegID = strval($gcm_regid);

    $serverName = "LOCALHOST\SQLEXPRESS"; 
    $uid = "gcm";     
    $pwd = "gcm";    
    $databaseName = "gcm";   

    $connectionInfo = array(
        "UID" => $uid,
        "PWD" => $pwd,
        "Database" => $databaseName
    ); 

    $db = sqlsrv_connect($serverName, $connectionInfo)
              or die("Unable to connect to server");

    $query = "
        SELECT *
        FROM GcmUsers
        WHERE gcuRegID = " . $strRegID;
    $resultQueryRegID = sqlsrv_query($db, $query);

    if ($resultQueryRegID) {
        $rows = sqlsrv_has_rows($resultQueryRegID);

        if ($rows === true) {
            //echo "There are rows. <br />";
        } else { 
            // echo "There are no rows. <br />";
            $queryInsert = "
                INSERT INTO GcmUsers
                    (gcuCompanyID, gcuRegID)
                VALUES
                    ('$strCompanyID','$strRegID')
            ";
            $result = sqlsrv_query($db, $queryInsert);
        }
    }
}

[編集1]

public

function storeUser($companyid, $gcm_regid) {

    $strCompanyID = strval($companyid);
    $strRegID = strval($gcm_regid);


    $serverName = "LOCALHOST\SQLEXPRESS";
    $uid = "gcm";
    $pwd = "gcm";
    $databaseName = "gcm";

    $connectionInfo = array("UID" => $uid, "PWD" => $pwd, "Database" => $databaseName);

    $db = sqlsrv_connect($serverName, $connectionInfo) or die("Unable to connect to server");



    $sql = "SELECT * FROM GcmUsers where gcuRegID = ?";

    // Initialize parameters and prepare the statement.
    // Variables $qty and $id are bound to the statement, $stmt.

    $stmt = sqlsrv_prepare($db, $sql, array(&$strRegID));
    if (!$stmt) {
        die(print_r(sqlsrv_errors(), true));
    }

    $result = sqlsrv_execute($stmt);



    $rows = sqlsrv_has_rows($result);

    if ($rows === true) {
        // echo "There are rows. <br />";
    } else {
        // echo "There are no rows. <br />";
        $queryInsert = "INSERT INTO GcmUsers ( gcuCompanyID, gcuRegID) values ('$strCompanyID','$strRegID')";
        $result = sqlsrv_query($db, $queryInsert);
    }
}

[編集2]

$sql = "SELECT * FROM GcmUsers where gcuRegID = ?";

                        // Initialize parameters and prepare the statement. 
                        // Variables $qty and $id are bound to the statement, $stmt.

                        $stmt = sqlsrv_prepare( $db, $sql, array( &$strRegID));
                        if( !$stmt ) {
                            die( print_r( sqlsrv_errors(), true));
                        }           

                        $result = sqlsrv_execute( $stmt );





                            if (sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {
                                // Got rows
                            }else{
                                // Not rows
                                 $queryInsert = "INSERT INTO GcmUsers ( gcuCompanyID, gcuRegID) values ('$strCompanyID','$strRegID')";
                                  $result = sqlsrv_query($db, $queryInsert);
                            }
4

2 に答える 2