-3

我需要你帮帮我

我尝试了几种方法,我得到了错误

排序如下: 率 DESC 年龄 ASC 身高 DESC 体重 ASC

也想按字段排序

如果你能用一个例子来解释,那将是完美的注意顺序的方式和位置

                   <? Php

                   $ O ='';
                   / / Put the appropriate information:
                   $ Data = array ('localhost', 'user', 'password');
                   $ Con = mysql_connect ($ data [0], $ data [1], $ data [2]);

                   if ($ con) {
                   $ O = 'Error: Could not connect to server. '. mysql_error ();
                   echo $ o;
                   exit;
                   }

                   / / Change the name of the database for yours
                   $ Db_name = 'database';

                   if (mysql_select_db ($ db_name, $ con)) {
                   $ O = 'Error: Could not select database "'. $ Db_name. '". '.                        mysql_error ();
                   echo $ o;
                   exit;
                   }

                   $ Table = 'users' / / Change this only if you know what it does.
                   $ Query = "SELECT * FROM $ table";
                   $ Where = "WHERE";
                   $ And = 0;


                   if (isset ($ _GET ['name']) &&! empty ($ _GET ['name'])) {
                   $ Where. = "Name LIKE '% $ _GET [name]%'";
                   $ And = 1;
                   }

                   if (isset ($ _GET ['rate'])) {
                   $ E = explode ('-', $ _GET ['rate']);

                   if (is_numeric ($ e [0]) && is_numeric ($ e [1])) {
                   if ($ and === 1)
                   $ Where. = "AND";


                   $ Where. = "Rate BETWEEN $ e [0] AND $ e [1]";
                   $ And = 1;
                   }
                   }

                   if (isset ($ _GET ['age'])) {
                   $ E = explode ('-', $ _GET ['age']);

                   if (is_numeric ($ e [0]) && is_numeric ($ e [1])) {
                   if ($ and === 1)
                   $ Where. = "AND";


                   $ Where. = "Age BETWEEN $ e [0] AND $ e [1]";
                   $ And = 1;
                   }
                   }

                   if (isset ($ _GET ['Height'])) {
                   $ E = explode ('-', $ _GET ['Height']);

                   if (is_numeric ($ e [0]) && is_numeric ($ e [1])) {
                   if ($ and === 1)
                   $ Where. = "AND";


                   $ Where. = "Height BETWEEN $ e [0] AND $ e [1]";
                   $ And = 1;
                   }
                   }

                   if (isset ($ _GET ['weight'])) {
                   $ E = explode ('-', $ _GET ['weight']);

                   if (is_numeric ($ e [0]) && is_numeric ($ e [1])) {
                   if ($ and === 1)
                   $ Where. = "AND";


                   $ Where. = "Weight BETWEEN $ e [0] AND $ e [1]";
                   $ And = 1;
                   }
                   }

                   if (isset ($ _GET ['City']) &&! empty ($ _GET ['city'])) {
                   if ($ and === 1)
                   $ Where. = "AND";

                   $ Where. = "City = '$ _GET [City]'";
                   $ And = 1;
                   }

                   if (isset ($ _GET ['Eyes']) &&! empty ($ _GET ['Eyes'])) {
                   if ($ and === 1)
                   $ Where. = "AND";

                   $ Where. = "Eyes = '$ _GET [Eyes]'";
                   $ And = 1;
                   }

                   if (isset ($ _GET ['Hair']) &&! empty ($ _GET ['Hair'])) {
                   if ($ and === 1)
                   $ Where. = "AND";

                   $ Where. = "Hair = '$ _GET [Hair]'";
                   $ And = 1;
                   }




                   if (strlen ($ where)> 6)
                   $ Query. = $ Where;

                   $ Result = mysql_query ($ query, $ con);



                   if ($ result) {
                   $ Nrows = mysql_num_rows ($ result);

                   if ($ nrows> 0) {
                   $ O ='';

                   while ($ row = mysql_fetch_assoc ($ result)) {

                   $ O. = "$ Row [image]";
                   }

                   $ O. = "";
                   Else {}
                   $ O = 'There were no results';
                   }
                   Else {}
                   $ O = 'Error: Unable to run the query. '. mysql_error ($ con);
                   }

                   mysql_free_result ($ result);
                   mysql_close ($ con);
                   echo $ o. "";
                   exit;
                   ?>
4

1 回答 1

0

在尝试修复 SQL 错误之前,请修复 PHP 错误。例如; $ O不正确,应该是$O$_GET[]。此外,PHP 区分大小写,因此$o当您的意思是$O.

关于 SQL,正如 Benjamin 指出的那样,您需要在 SQL 关键字之前和之后放置空格,并且$ Query. = $ Where;可能应该是$Query. = " ".$Where;

此外,由于用户的权限取决于他们正在访问的数据库,因此您应该在提供用户详细信息之前选择数据库。(或同时)。

对于复杂的查询,请尝试使用 MySQL shell。一旦你弄清楚了查询,然后把它交给 PHP 端。至少我是这样做的。

祝你好运,小睡

于 2013-02-27T14:52:06.200 回答