jquery .postを使用してPHPファイル内でMySQLクエリを動的に変更しますか?

StackOverflow https://stackoverflow.com/questions/2716838

  •  01-10-2019
  •  | 
  •  

質問

かなり長い間これを試していたので、助けが必要です。基本的に、データベースを照会するPHPファイルがあり、ログインインユーザーの名前に基づいてクエリを変更したいと思います。

私のサイトで起こることは、ユーザーがTwitter OAuthでログオンし、詳細(Twitterユーザー名など)を表示できることです。ユーザーが情報を追加したデータベースを持っています。私が起こりたいことは、ユーザーがTwitter OAuthでログインするとき、jQueryを使用してユーザーのユーザー名を取得し、MySQLクエリを更新して結果のみを表示することができます。 user_name =その特定のユーザー名。

現時点では、MySQLクエリは次のとおりです。

"SELECT * FROM markers WHERE user_name = 'dave'"

私は次のようなことを試しました:

"SELECT * FROM markers WHERE user_name = '$user_name'"

PHPファイルの他の場所には、$ user_name = $ _post ['user_name'];を持っています。別のファイル(ユーザーがTwitterを介してログインした後にリダイレクトされるファイル)では、次のようなjQueryがあります。

$(document).ready(function(){
$.post('phpsqlinfo_resultb.php',{user_name:"<?PHP echo $profile_name?>"})});

$ profile_nameは、そのページで以前に定義されています。

私は明らかに何か間違ったことをしていることを知っています、私はまだ学んでいます。 jQueryを使用してユーザーのユーザー名をPHPファイルに投稿してMySQLクエリを変更して、ログインしているユーザーに関連する結果のみを表示する方法はありますか。以下のクエリにPHPファイルを含めました:

    <?php
// create a new XML document
//$doc = domxml_new_doc('1.0');
$doc = new DomDocument('1.0');

//$root = $doc->create_element('markers');
//$root = $doc->append_child($root);
$root = $doc->createElement('markers');
$root = $doc->appendChild($root);
$table_id = 'marker';
$user_name = $_POST['user_name'];
// Make a MySQL Connection
include("phpsqlinfo_addrow.php");
    $result = mysql_query("SELECT * FROM markers WHERE user_name = '$user_name'")
    or die(mysql_error());
// process one row at a time
//header("Content-type: text/xml");
header('Content-type: text/xml; charset=utf-8');
while($row = mysql_fetch_assoc($result)) {
    // add node for each row
  $occ = $doc->createElement($table_id);
  $occ = $root->appendChild($occ);
  $occ->setAttribute('lat', $row['lat']);
  $occ->setAttribute('lng', $row['lng']);
  $occ->setAttribute('type', $row['type']);
  $occ->setAttribute('user_name', utf8_encode($row['user_name']));
  $occ->setAttribute('name', utf8_encode($row['name']));
  $occ->setAttribute('tweet', utf8_encode($row['tweet']));
  $occ->setAttribute('image', utf8_encode($row['image']));
} // while
$xml_string = $doc->saveXML();
$user_name2->response;
echo $xml_string;
?>

これは、GoogleマップMashup Imで使用しようとしているために使用されます。あなたが私を助けることができるなら、どうもありがとう。私の質問が十分に明確でない場合は、言ってください、そして私はあなたのために明確にしようとします。これは簡単な修正だと確信しています。私はそれをするのは比較的経験が浅いだけです。これに2日間行っていて、残念ながら私は時間を使い果たしています。

役に立ちましたか?

解決

最初は、クエリに直接挿入している$ _POSTを逃れる必要があります。

'SELECT * FROM markers WHERE user_name = `' . mysql_real_escape_string($user_name) . '`';

エリックが示唆するように、最も便利な警告を窓から捨てないでください - おそらく答えがすぐに現れます。

しかし、私がよくわからないのは、あなたのマッシュアップの仕組みです。 JavaScriptを省略して、PHP自体の内部ですべてのことをするだけでは、はるかに簡単になる可能性があります。また、OAUTHコールバックを確認することもできます - Twitter IDまたはユーザー名を提供する必要があります。

他のヒント

何も悪いことはありません:

$result = mysql_query("SELECT * FROM markers WHERE user_name = '$user_name'");

その後、SQLインジェクションの機が熟している - それは機能するはずです。データベースでクエリを直接試して、結果が期待しているかどうかを確認することをお勧めします。

また、開発中にエラーレポートをオンにすることをお勧めします。次の行をドキュメントの上部に追加します。

error_reporting(E_ALL);
ini_set("display_errors", 1);

そして、それはあなたが多くのエラーを明らかにするのに役立ちます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top