0

PHPを使用してAndroidアプリケーションから取得した値を配置するmySQLデータベースにテーブルがあります。現在、値は UniqueID であるため、そのカウントを保持しているため、アプリケーションがアクセスされた回数を知ることができます。新しい UniqueID が到着すると、カウント = 1 でデータベースに追加され、既存の UniqueID が取得されると、そのカウントが単純にインクリメントされます。PHPスクリプトを何度も試しましたが、うまくいきませんでした。参照用に私のphpスクリプトを添付しています。

<?php


ini_set('default_charset', 'utf-8');
header('Content-Type: text/html; charset=UTF-8');
$n=$_POST['UniqueID'];  
$count=1;  
$Today=date("F j, Y, g:i a");

mysql_connect("localhost","root","");  
mysql_select_db("farm-o-pedia");

$con="select userid from uniqueid";  
$result=mysql_query($con) or die(mysql_error());  
if($result=$n)  
{  

$upd="update uniqueid set count=count+1 where userid=$n";  
$result=mysql_query($upd) or die(mysql_error());  
}  
else  {  
$que="insert into uniqueid (userid,count,date) values($n,\"$count\",\"$Today\")";    
$sql=mysql_query($que) or die(mysql_error());  
}

mysql_close();
?>

どんな助けでも大歓迎です.Thanks!

4

3 に答える 3

3

これを行う別の方法は、MySQLを利用することです。ON DUPLICATE KEY UPDATE

UNIQUE最初に行うことは、列に制約を定義することですuseridPRIMARY KEYの場合は、このステップをスキップしてください)。

ALTER TABLE uniqueid ADD CONSTRAINT tb_uq UNIQUE (userid)

クエリが実行された後、はON DUPLICATE KEY UPDATE正常に機能します。

SELECTこれには他のsはありませんIF

INSERT INTO UNIQUEID (userID `count`, date)
VALUES ('idHere', 0, NOW())
ON DUPLICATE KEY 
UPDATE `count` = `count` + 1;
于 2013-01-26T10:18:01.640 に答える
2

mysql_query は単一の結果ではなく結果セットを返すため、次のようになります。

$con="select userid from uniqueid";  
$result=mysql_query($con) or die(mysql_error());  
if($row=mysql_fetch_assoc($result)) { //if a row is found in resultset, then you already have this id in your table
    $upd="update uniqueid set count=count+1 where userid=$n";  
    $result=mysql_query($upd) or die(mysql_error());  
} else {  
    $que="insert into uniqueid (userid,count,date) values($n,\"$count\",\"$Today\")";    
    $sql=mysql_query($que) or die(mysql_error());  
}

また、mysql の関数は非推奨になっているため、mysql の代わりに mysqli 関数の使用を開始する必要があります。

于 2013-01-26T10:00:13.443 に答える
2

行を見てくださいif($result=$n)-これは決して機能しません。一部の比較演算子は、単一の値ではなくクエリ結果で構成される結果文字列でもあり==ません。=

行を次のように置き換えます。

if (mysql_num_rows($result)===1)  

第二に、クエリのエスケープを実際に検討し、できれば非推奨の mysql_* 関数を使用して PDO または mysqli に変更する必要があります。

于 2013-01-26T10:00:23.963 に答える