简单的SQL查询,根据条件显示表中的值

时间:2013-08-27 11:18:50

标签: mysql

假设有客户端和服务器

Client:: Android移动

Server:: AWS服务器

服务器中安装了mysql数据库

Database name::

Tables in person Database:: “sam”和“carl”

现在,移动设备会发送请求...

  • 如何编写SQL query以便移动设备发送请求i / p为 “sam”display all the values of sam table
  • 但是如果移动设备发送一个i / p作为carl,那么dipslay所有的值 卡尔表

[注] 我使用了语句SELECT * FROM TABLE_NAME

我想要实现的是当客户端请求进入时的条件响应


I / p表示:: 说我把carl作为ip ....我想执行一个查询,其他sam作为输入...我想执行另一个查询

我应该写什么查询语句?


希望我正确地陈述我的问题

感谢

2 个答案:

答案 0 :(得分:0)

为此你必须再要一个表来存储IP地址和它们的表名并创建这样的查询

Select tableName from IPTable where ip= 'xxx.xxx.xxx.xxx'

并在第二个查询中使用该表名

select * from tablename 

答案 1 :(得分:0)

首先,您必须在服务器代码中获取Android客户端的IP地址。在PHP中(source):

$client_ip = $_SERVER['REMOTE_ADDR']

或者,如果ELB后面有多个Apache Web服务器(source):

$http_headers = apache_request_headers(); 
$client_ip = $http_headers["X-Forwarded-For"];

现在,您的PHP代码可以根据$client_ip的值选择要运行的查询。如果地址是Sam's,请运行select * from sam,如果是Carl,请运行select * from carl。如果它是未知的IP地址,那么您可以回复错误消息。

无论如何,我不认为基于IP的识别是一个好主意。如果Carl或Sam重新启动他的Android手机,其IP地址将会改变,连接将不再有效。

您的数据库设计也存在问题。例如,如果您当前的Sam和Carl表包含聊天消息,那么以下架构会更好:

- User table: ID, Name, IPAddress 
- Message table: ID, UserID, SendingTime, Text

对于这些表,列出当前用户的消息的查询将如下所示:

SELECT User.Name, Message.SendingTime, Message.Text
FROM User, Message
WHERE User.ID = Message.UserID AND User.IPAddress = 'xxx.xxx.xxx.xxx'

此处'xxx.xxx.xxx.xxx'将是$client_ip的值。