首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对GET变量使用select

问对GET变量使用select
EN

Stack Overflow用户
提问于 2013-11-25 17:04:06
回答 3查看 118关注 0票数 0

我已经将变量值传递到另一个页面,但现在我试图显示与此值相关的数据库内容。

工作流程:

  1. 有一张表格是我进入一个新公司的。我已经进入Company1了。在公司数据库里。
  2. 还有另一种形式,我在一个选项标签中列出了所有记录在案的公司。在这种形式下,我记录公司员工的信息,包括选择的公司选项。
  3. 有一页列出了所有记录在案的公司。每一个都有一个链接(company.php?name=$companyName)。
  4. 这些公司的名字是通过“进入另一页”传递的。
  5. 另一个页面名为"company.php“,需要显示公司的信息(数据库中的其他字段)。
  6. 它还必须显示其他表记录,如“雇员”。它必须列出所有通过GET传递的拥有同一公司名称的员工。

问题是:我如何执行第5和第6步?我试过使用这个select,但没有成功:

代码语言:javascript
复制
$query = mysql_query("SELECT employeeName FROM employeeForm  WHERE companyName='$employeeName'") or die(mysql_error());

我真的很难说清楚,如果这不是可以理解的话,我很抱歉。几个小时来一直致力于这个问题。

我很感激你的帮助!

编辑:使用的方法:

代码语言:javascript
复制
include("connect.php");
$companyName=$_GET['companyName'];
$result = mysql_query("SELECT * FROM employeeList WHERE company = '$companyName'");

while($result = mysql_fetch_array($query))
{
echo    '<div class="form">'.$result['employeeName'].'</div>';
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-25 18:06:53

我强烈建议您使用PDO,下面是一个使用PDO的示例。

代码语言:javascript
复制
<?php

$dsn      = 'mysql:dbname=so;host=localhost';
$user     = 'root';
$password = '';


// try to connect.
try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    exit(1);
}

// the sql which gets all employees for this company.
$getEmployeesSQL = '';
$getEmployeesSQL .= ' SELECT c.name AS company_name, e.name AS employee_name, e.salary, c.location ';
$getEmployeesSQL .= ' FROM company c';
$getEmployeesSQL .= ' LEFT JOIN employee e';
$getEmployeesSQL .= ' ON c.id = e.company_id';
$getEmployeesSQL .= ' WHERE c.name = :cname';

// sql to get company data.
$companyDataSQL = "SELECT * FROM company WHERE name = :cname";

// prepare the sql.
$stmtOne = $dbh->prepare($getEmployeesSQL);
$stmtTwo = $dbh->prepare($companyDataSQL);

// execute
$stmtOne->execute(array(':cname' => $_GET['company']));
$stmtTwo->execute(array(':cname' => $_GET['company']));

// print results.
$employees   = $stmtOne->fetchAll(PDO::FETCH_ASSOC);
$companyData = $stmtTwo->fetchAll(PDO::FETCH_ASSOC);

/* * ****************************************** */
/*       Iterate and print HTML table.          */
/* * ****************************************** */


$html = '<table border="1">';
foreach ($companyData as $company) {
    foreach ($company as $field => $value) {
        $html.= "<tr><td>$field</td><td>$value</td></tr>";
    }
}
$html . '</table>';
echo $html;

$html = '<table border="1">';
foreach ($employees as $row) {
    $html.= '<tr><td>' . implode('</td><td>', array_values($row)) . '</td></tr>';
}
$html . '</table>';
echo $html;

此代码段所做的是在表中打印公司数据,然后使用公司名称获取员工数据。

我使用的表结构如下:

代码语言:javascript
复制
CREATE TABLE `company` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(200) NOT NULL,
  `location` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

CREATE TABLE `employee` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(200) NOT NULL,
  `salary` bigint(12) DEFAULT NULL,
  `company_id` bigint(20) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_company` (`company_id`),
  CONSTRAINT `fk_company` FOREIGN KEY (`company_id`) REFERENCES `company` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1

它返回数据如下:(不是很漂亮,但现在必须这样做。)

​

​

票数 0
EN

Stack Overflow用户

发布于 2013-11-25 17:10:58

答案:

你的代码:

代码语言:javascript
复制
         while($result = mysql_fetch_array($query))
         {
      echo    '<div class="form">'.$result['employeeName'].'</div>';
        }

应:

代码语言:javascript
复制
        while($res = mysql_fetch_array($result)) //changed to the name of the variable that stores the query  (can't store the array in a variable named after the query so i've changed it to $res...)
     {
       echo    '<div class="form">'.$res['employeeName'].'</div>';
       }

老:,您正在检索查询结果吗?要返回一个结果,请使用mysql_fetch_assoc()函数,并使用mysql_fetch_array()返回整个行(或多个变量)。

示例:

代码语言:javascript
复制
     $test = mysql_fetch_assoc($query);

     $array = mysql_fetch_array($query); 

Ps。若要选择数组,请使用与以下类似的语法:

代码语言:javascript
复制
    "SELECT * FROM table WHERE var = condition"

PPs。这是取自php.net的:

代码语言:javascript
复制
 This extension is deprecated as of PHP 5.5.0, and is not recommended for writing new code as it will be removed in the future. Instead, either the mysqli or PDO_MySQL extension should be used. See also the MySQL API Overview for further help while choosing a MySQL API. 

编辑:

你的代码:

代码语言:javascript
复制
   $query = mysql_query("SELECT employeeName FROM employeeForm  WHERE companyName='$employeeName'") or die(mysql_error());

将变量视为文本(变量名称不是内容:) .用途:

代码语言:javascript
复制
       WHERE '".$employeeName."' 

要将变量解析为查询..。(注意双引号)

也是.若要访问查询的结果,请使用以下内容:

代码语言:javascript
复制
    $array['COLUMN NAME'];

您使用的..assuming:$array = mysql_fetch_array($query);

票数 2
EN

Stack Overflow用户

发布于 2013-11-25 17:30:36

据我所知,你有两张桌子--一张是公司的,一张是员工的,很明显,每个公司都有多个雇员。如果您试图为给定的公司生成员工列表,则需要在SQL查询中使用公司名称(假设它是唯一的)。

代码语言:javascript
复制
$companyName = $_GET('companyName');
$result = mysql_query("SELECT * FROM employeeList WHERE company = '$companyName'");

这将给你一个员工名单(连同他们的所有信息)与该特定的公司。

编辑:

要循环查询并打印结果,可以使用以下内容(以及上面的内容):

代码语言:javascript
复制
echo "<table><tbody>";
while ($row = mysql_fetch_assoc($result)) {
echo "<tr><td>" . $row['employee_first_name'] . "&nbsp;" . $row['employee_last_name'] .  "</td></tr>";
}
echo "</tbody></table>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20198918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档