【问题标题】:Creating queries in php [closed]在php中创建查询[关闭]
【发布时间】:2014-09-17 18:35:30
【问题描述】:

我必须从 postgreSQL 中针对世界数据库编写 2 个查询。现在,当我编译我的程序时出现错误,我不知道为什么。我正在处理的两个查询是

1. Find the district and population of all cities named Springfield. 
   Sort results from most populous to least populous. (3 results)
2. Find the name, district, and population of each city in Brazil (country code BRA). 
   Order results by city name alphabetically. (250 results)

然后我必须在表格中打印出结果。我的程序的这一部分有一些问题,我必须打印出结果的部分。我相信我有正确的 SELECT 语句来获取正确的信息,我只是对如何在表格中显示信息感到困惑。任何帮助将不胜感激。这是我的代码。

<html>
<head/>
<body>
<form method = "POST" action ="<?= $_SERVER['PHP_SELF'] ?>" >
<table>
    <tr><td>Select Query</td><td><select name="query">
    <option value="1">Query 1</option>
    <option value="2">Query 2</option>
</select>
</td></tr>
</tr><td colspan="2"><input type="submit" name="execute" value="Generate" /></td></tr>
</table>
</form>

<?php
    include("public_html/secure/database.php");
    $con = ph_connect(HOST." ".DBNAME." ".USERNAME." ".PASSWORD);
    if(isset($_POST["execute"])){

    switch($_POST["query"]){

            case 1:
                    $q = "SELECT district, population FROM lab2.city WHERE (city = 'Springfield') ORDER BY population DESC";
                    $result = pg_query($q) or die('Query failed: ' . pg_last_error());
                    break;

            case 2:

                   $q = "SELECT name, district, population FROM lab2.city WHERE (country_code = 'BRA') ORDER BY name";      
                    $result = pg_query($q) or die('Query failed: ' . pg_last_error());                                      
                    break;
            }

                    echo "<table>\n";
                    while($line = pg_fetch_array($result, null, PGSQL_ASSOC)){
                            echo "\t<tr>\n";
                            foreach($line as $col_value){
                                    echo "\t\t<td>$col_value</td>\n";
                            }
                    echo "\t</tr>\n";
            }
            echo "</table>\n";

            pg_free_result($result);
            pg_close($con);


?>

</body>
</html>

我现在使用命令 php lab2.php 时遇到的错误是

这是第一个查询的正确输出示例。

district    population
Massachusetts   152082
Missouri    151580
Illinois    111454

【问题讨论】:

  • 'Query failed: ' pg_last_error() 应该连接'Query failed: ' . pg_last_error()$q = Select 也是错误的语法。
  • @u_mulder 好的,谢谢,但在更正这两个错误后我仍然收到该错误
  • 查询必须是字符串,拜托,学习一些php基础知识。
  • @u_mulder 感谢您的澄清。我仍然有一个错误,它是 PHP Parse error: syntax error, unexpected $end in /students/6/njs2q6/public_html/cs3380/lab2/lab2.php on line 60
  • 现在您已经编辑了您的 OP 以放入引号中,您是否测试过它是否会运行?

标签: php mysql postgresql compiler-errors echo


【解决方案1】:

首先,您应该在 $q 变量中的字符串周围加上引号;

例子:

$q = "Select district, population FROM lab2.city WHERE (city = 'Springfield') ORDER BY population DESC";

【讨论】:

  • 好的,感谢您的澄清。我仍然得到一个错误。 PHP Parse 错误:语法错误,第 60 行 /students/6/njs2q6/public_html/cs3380/lab2/lab2.php 中的意外 $end
  • 我没有第 60 行,我的最后一行是第 59 行,这是最后一行,所以我很困惑哈哈
  • 您还错过了 if 语句的右括号。 if(isset($_POST["execute"])){ .... pg_close($con); } 你现在应该没有语法错误了。
  • @u_mulder 感谢视觉增强 :)
猜你喜欢
  • 2014-01-04
  • 1970-01-01
  • 2016-10-31
  • 2013-09-01
  • 2013-11-09
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
相关资源
最近更新 更多