1

.構文なのか何なのかわかりません。私はさまざまな方法を試しましたが、これは私がうまくいくと思った最も簡単な方法です。

以下を使用して、userData.php に情報を送信します。

http://mydomain.com/adverts/userStats.php?name=001EC946C2F4&adNum=1&playClick=1

userData.php には次のものがあります。

<?php 
    $db = mysql_connect('localhost', 'username', 'password') or die('Could not connect: ' . mysql_error()); 
   $db_selected =  mysql_select_db('databaseName', $db) or die('Could not select database');
if (!$db_selected)
  {
  die ("Can\'t use test_db : " . mysql_error());
  }

    $name = mysql_real_escape_string($_GET['name']); 
    $date = date("d/m/Y");
    $adClick = mysql_real_escape_string($_GET['adNum]);
    $playN = mysql_real_escape_string($_GET['playClick']);

$query = mysql_query("INSERT INTO playerData VALUES ('$name', '$date','$adClick','$playN')");
$result = mysql_query($query) or die('Query failed: ' . mysql_error())); 

mysql_close($db);
?>

phpMyAdmin からテーブルに 2 つのレコードを手動で追加しました。それらを正常に表示または更新できますが、新しいレコードを追加することはできません。別のプログラムからリンクが呼び出されるたびに新しいレコードを開始し、MAC アドレス、日付、adNum、および playClick を保存したいだけです。

EDIT2:: $クエリをエコーし​​ます。為に

http://simplehotkey.com/adverts/userStats.php?name=001EC946C2F4&adNum=1&playClick=1

出力:
INSERT INTO playerData(mac,date,AdClick,PlayNum) VALUES ('001EC946C2F4', '26/07/2012','1','1')

これは、DBに追加しないだけでいいのです。

4

4 に答える 4

2

特に構文の強調表示を使用すると、ここで何が問題なのかを簡単に確認できます。

$adClick = mysql_real_escape_string($_GET['adNum]);

この行には一重引用符がありません。そのはず:

$adClick = mysql_real_escape_string($_GET['adNum']);

これは、他のすべてを台無しにする構文エラーです。

データベースの選択にデータベースハンドラーがないことは言うまでもありません。つまり、次のようになります。

mysql_select_db('databasename',$db); 

@swapnesh が指摘したとおり、 およびここに記載されているとおりです。

編集

エラーの欠如を再現することはできませんでしたが、私が得たのはエラーです。まず、12 行目に余分な ) があります。

$result = mysql_query($query) or die('Query failed: ' . mysql_error()));

次のようにする必要があります。

$result = mysql_query($query) or die('Query failed: ' . mysql_error());

最後に、実際にはクエリを 2 回不適切に実行したため、2 回目はクエリが空です。あなたが持っているもの:

$query = mysql_query("INSERT INTO playerData VALUES ('$name', '$date','$adClick','$playN')");
$result = mysql_query($query) or die('Query failed: ' . mysql_error())); 

代わりに次のようにする必要があります。

$query = "INSERT INTO playerData VALUES ('$name', '$date','$adClick','$playN')";
$result = mysql_query($query) or die('Query failed: ' . mysql_error()); 
于 2012-07-27T04:39:42.520 に答える
2

正しい構文は --

mysql_select_db("databaseName", $db);

そして、接続エラーにこのようなものを使用すると、より良い--

$db_selected= mysql_select_db("databaseName", $db);
if (!$db_selected)
  {
  die ("Can\'t use test_db : " . mysql_error());
  }

編集

あなたはすべて間違って書いています:(

$query = mysql_query("INSERT INTO playerData VALUES ('$name', '$date','$adClick','$playN')");
$result = mysql_query($query)  <--------------WRONG

このようなことを試してみてください----

$query = "INSERT INTO playerData(CORRECT_COL_NAMES) VALUES ('$name', '$date','$adClick','$playN')";
$results = mysql_query($query, $connection);

新しい編集

エラーの領域---- 誤りDATATYPE

','1','1' <--- これは文字列として渡されますが、これは db 構造に int として含まれています..同じクエリを実行してエラーを特定します..また、できます$result = を使って計算するmysql_query($query) or die(mysql_error());

于 2012-07-27T04:39:50.587 に答える
0

この行に構文エラーがあります

間違い :

$adClick = mysql_real_escape_string($_GET['adNum]);

正しい :

$adClick = mysql_real_escape_string($_GET['adNum']);
于 2012-07-27T05:01:05.513 に答える
0

insert ステートメントを使用する代わりに、エントリを明示的に受け取るフィールドを追加します。データベース テーブルにはさらに多くのフィールドがある可能性があり、insert ステートメントはどのフィールドがデータを受け取るかを明示的に示していません。

$query = mysql_query("INSERT INTO playerData (Name,Date,AdClick,PlayN) VALUES ('$name', '$date','$adClick','$playN')");
于 2012-07-27T04:47:36.277 に答える