已经尝试了一段时间了,我需要帮助。基本上,我有一个查询数据库的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 Map Mashup IM尝试使用。非常感谢您可以帮助我。如果我的问题还不够清楚,请说,我会尽力为您澄清。我敢肯定这是一个简单的修复,我只是没有经验。已经过去了两天,不幸的是,我没时间没时间。

有帮助吗?

解决方案

首先,您应该逃脱$ _ post,然后直接插入查询:

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

正如埃里克(Erik)所建议的那样,不要把最有用的警告扔出窗户 - 很可能答案会弹出。

但是,我不太确定的是混搭的工作方式。如果您只完成PHP本身内的所有内容,就可以变得容易得多,完全省略JavaScript。您可能还需要检查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