Я разработчик Android, у которого нет знаний с php. У меня есть приложение, которое использует Google push-уведомления и прекрасно работает. Проблема, с которой я сталкиваюсь, заключается в том, что тот же телефон регистрируется с Google, что regID из Google должен храниться в моей БД. Если я нажимаю приложение на телефон, скажу 4 раза, тогда у меня будет 4 строки в БД, указывающих на один телефон.php sql_srv проверить, нет ли у 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);
}
}
}
[EDIT 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);
}
}
[edit2]
$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);
}
Можете ли вы показать 'var_dump (sqlsrv_errors());' после первого 'sqlsrv_query()' позвонить? Также я замечаю, что ваш 'if ($ resultQueryRegID) {' не имеет блока 'else' для обработки случая, когда возникает ошибка с первым запросом ;-) – DaveRandom