0

我学习 PHP/MySQL 已经有一段时间了,还没有学到太多,因为我专注于 iPhone 开发以及处理我的全职工作。

我正在构建一个消息传递客户端,使用 JSON 来提取新消息和一个聊天窗口......我正在处理的部分是从我的数据库中获取信息。我希望在此请求中获取人与人之间的所有消息(即:FromUser 和 ToUser),然后以 JSON 格式显示它们,但是由于某种原因我无法正确以 JSON 格式显示它。

这是我的例子

<?php 
 $enduser = $_GET['usernameto'];
$enduser1 = $_GET['usernamefrom'];
$db = mydatabase;
$con = mysql_connect("localhost","admin","password");
if (!$con)
  {
   die('Could not connect: ' . mysql_error());
  }
mysql_select_db($db, $con);
   $arr = array();
       //Execute the query
      $rs = mysql_query("SELECT * FROM messages WHERE touser = '$enduser' AND fromuser = '$enduser1'");
        $rs1 = mysql_query("SELECT * FROM messages WHERE touser = '$enduser1' AND fromuser = '$enduser'");

        // Add the rows to the array 
       while($obj = mysql_fetch_object($rs)) {
        $arr = $obj;
        } 

    // Add the rows to the array 
   while($obj1 = mysql_fetch_object($rs1)) {
   $arr1 = $obj1;
   }

  echo '{"users":'.json_encode($arr).' '.json_encode($arr1).'}';
// echo ''.json_encode($arr).'';
mysql_close($con);
?>

现在这确实显示了所有消息,例如 FromUser= user1 ToUser= user2 并且还显示 Fromuser= user2 和 toUser = User1。在两个单独的 JSON 列表中,但我希望将它们拉到一个简单的 JSON 列表中,如果可以做到,那将是惊人的,我知道它必须放在我的查询部分......

我也知道我的代码存在大量漏洞和问题,这些漏洞和问题并不“干净”,但是暂时不需要遵循这些方法,直到我去学习如何遵循 SQLi 和 Real Escape 字符串/注入。 ...

谢谢 :-)

4

2 回答 2

0

关于学习 SQL 注入的评论是正确的,但您可以在一个查询中获取消息:

SELECT * FROM messages WHERE (touser = '$enduser' AND fromuser = '$enduser1') OR (touser = '$enduser1' AND fromuser = '$enduser')

这应该选择您要查找的内容。

于 2013-04-05T21:38:36.307 回答
0

您的问题非常分散,但我认为您只需将两个结果数组与

$combined = array_merge($arr, $arr1);

或者更改您的查询,使其同时提取两组数据。但正如 Marc B 所说,你真的需要养成避免 SQL 注入的习惯,这很容易。

于 2013-04-05T21:39:14.587 回答