Dynamiquement changement recherche MYSQL dans un fichier PHP en utilisant jQuery .post?

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

  •  01-10-2019
  •  | 
  •  

Question

essayé cela pour un certain temps maintenant et je besoin d'aide. Fondamentalement, j'ai un fichier PHP qui base de données de requêtes et je souhaite modifier la requête basée sur un nom connecté des utilisateurs.

Qu'est-ce qui se passe sur mon site est qu'un utilisateur se connecte sur Twitter avec OAuth et je peux afficher leurs coordonnées (nom d'utilisateur Twitter, etc.). J'ai une base de données que l'utilisateur a ajouté des informations à et je ce que je voudrais arriver est lorsque l'utilisateur se connecte avec Twitter OAuth, je pourrais utiliser jQuery pour prendre les utilisateurs nom d'utilisateur et mettre à jour la requête MySQL pour afficher uniquement les résultats correspondant à la user_name = ce nom d'utilisateurs particuliers.

À l'heure actuelle la requête MySQL est:

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

J'ai essayé quelque chose comme:

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

Et ailleurs dans le fichier PHP je $ user_name = $ _POST [ 'user_name'] ;. Dans un fichier séparé (celui dans lequel l'utilisateur est redirigé après qu'ils ouvrent une session via Twitter) J'ai quelques jQuery comme ceci:

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

$ profile_name a été défini plus haut sur cette page.

Je sais que je fais bien quelque chose de mal, je suis encore à apprendre. Est-il possible d'obtenir ce que je veux en utilisant jQuery pour afficher les utilisateurs nom d'utilisateur pour le fichier PHP pour modifier la requête mysql pour afficher uniquement les résultats relatifs à l'utilisateur qui est connecté. J'ai inclus le fichier PHP avec la requête ci-dessous :

    <?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;
?>

Ceci est utilisé avec une carte Google Mashup im essayant de le faire. Un grand merci si vous pouvez me aider. Si ma question ne suffit pas claire, s'il vous plaît dire et je vais essayer de clarifier pour vous. Je suis sûr que ce soit une solution simple, je suis relativement inexpérimenté de le faire. Dans ce domaine depuis deux jours et je suis à court de temps, malheureusement.

Était-ce utile?

La solution

Dans un premier temps, vous devez échapper à $ _POST vous insérez directement à la requête:

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

Comme Erik l'indique, ne pas jeter par la fenêtre les plus utiles avertissements -. Très probablement la réponse apparaîtra alors à droite avant

Mais ce que je ne suis pas tout à fait sûr est sur la façon dont vos travaux de mashup. Il pourrait obtenir beaucoup plus facile si vous venez de faire toutes les choses à l'intérieur du PHP lui-même, en omettant javascript du tout. Vous pouvez également vérifier callbacks OAuth - devrait vous donner twitter id nom ou utilisateur

.

Autres conseils

Il ne va rien avec:

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

Autre étant alors mûr pour injection SQL - il devrait fonctionner. Vous pouvez essayer votre requête directement sur la base de données et voir si les résultats sont ce que vous attendez.

Je vous recommande également d'allumer les rapports d'erreurs au cours du développement. Ajoutez les lignes suivantes en haut de votre document:

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

et il vous aidera à découvrir de nombreuses erreurs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top