在数据库的表中如何获取表中各项名称:编号.姓名.性别...

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在数据库的表中如何获取表中各项名称:编号.姓名.性别...相关的知识,希望对你有一定的参考价值。

在操作数据库的表时.可用查询语句得到每行数据,得到具体哪一行的数据,可是我需要得到未知表中的各项的名称,例如:编号.姓名.性别...等.具体怎么做要用什么语句.
不只是要看到.还要得到并且要赋给一个字符型的变量,把它表示出来
用select name from sys.syscolumns where(id=(select id from sys.sysobjects where(name='student')))
中的好像就能得到一个项的名称?,前一个name与后一个name是不是同一个,id=...又是什么意思.(我刚学别说太深)
我用的是database数据库.PB的.打上你的那句报语法错.是不是系统文件不对?

假设表名为student

SELECT name FROM sys.syscolumns
WHERE (id = (SELECT id FROM sys.sysobjects
WHERE (name = 'student')))

sqlserver2005下测试正常

赋值并表示的话,在代码里实现要好一点吧
---------------------------------------------------
前面那个name是指列的名字,后面的那个name是指表的名字。所处表不同,指代的东西也不同。
sys.sysobjects表里存放有数据库中所有表的信息,并配有唯一字段id。
sys.syscolumns表里存放有数据库中所有字段的信息,也有一个字段id,这里的id外键,参照sys.sysobjects表里的id。
说白,这两张表也就一个通过id外键的一对多的关系。

上面的sql文会得出以下数据

name
------
name
age
sex
参考技术A sql server的命令我就不太清楚了.

但是如果是oracle 数据库

用desc 表名
就可以看到了

如何从表中检索票数最高的候选人姓名[关闭]

【中文标题】如何从表中检索票数最高的候选人姓名[关闭]【英文标题】:How to retrieve the highest voted candidate name with number of votes from table [closed] 【发布时间】:2017-04-04 00:12:12 【问题描述】:

这是我的网页 php 代码。我想检索候选人的姓名和票数。但我不知道该怎么做。如您所见,我尝试了很多但没有用。我的数据库名称是选举,我的表名称是投票。在表中,我有 3 列 id、name、votes,并且只插入了三个候选人(不超过那个)。

<html>
<head>
<title>RESULT</title>
<script type="text/javascript" src="http://localhost/WTL/js/validateLogin.js">
</script>
<style type="text/css">
.btn

    border-radius:15px;
    border:solid 2px #B22222;
    padding:5px;
    width:10%;
    height:8%;
    background-color:white;
    float:center;



</style>

</head>
<body>
 <div class="header">
<img src="http://localhost/WTL/images/home2.jpg" id="home"  >
</div>
<div name="header2">
<form name="result" method="post" action="">
<Table class="tabb" align="center" >
<th>
<font size="5px" color="#B22222">RESULT</font>
</th>

   <tr><td><input type="textarea" rows="6" cols="50"   name="resultDisplay" placeholder="click result to check the result" class="textarea"></td></tr>
        </table>
        <center><div name="header3" class="last"><input type="submit" name="sub" value="RESULT" onclick="validate();" class="btn" ></div></center>
</form>
</div>
</body>
</html>
<?php
session_start();
$display= "";

if(isset($_REQUEST['sub']))

$db = mysqli_connect("localhost","root","","election");
if($db->connect_error)

    die("connection failed".$db->connect_error);

   
else

    $sql="SELECT name,votes FROM cr
        WHERE votes = (SELECT Max(votes) FROM cr)";
    $res=mysqli_query($db,$sql);
    //$name=$res['name'];
    //$votes=$res['votes'];
    echo '<textarea>', $res , '</textarea>';
    //$display .= '<div>'.$name.' '.$votes.'</div>';
   

?>

【问题讨论】:

“救命!紧急” - 哦,我明白了。顺便说一句,您不能使用 $res 查询的“回声”。 你为什么不按票数降序排列,限制为 1? SELECT name,votes FROM cr ORDER BY votes DESC LIMIT 1 - 更清楚一点。 您需要“循环”成功的结果。你不能只是echo $res 那样。您需要whileforeach。这一切都在这个php.net/manual/en/mysqli.query.php的手册中,网上也有很多教程。 你也很有可能在标题之前输出 session_start(); 的位置 - 这应该高于输出,错误报告会触发标题发送警告 php.net/manual/en/function.error-reporting.php - 如果你不是分配任何会话数组,然后您可以安全地删除它。 &lt;input type="textarea" 这也是无效的。您的代码包含太多错误。这个JS函数又在哪里validate() 【参考方案1】:

您的 sql 语法有错误。你的代码应该是这样的:

<html>
<head>
<title>RESULT</title>
<script type="text/javascript" src="http://localhost/WTL/js/validateLogin.js">
</script>
<style type="text/css">
.btn

    border-radius:15px;
    border:solid 2px #B22222;
    padding:5px;
    width:10%;
    height:8%;
    background-color:white;
    float:center;



</style>

</head>
<body>
 <div class="header">
<img src="http://localhost/WTL/images/home2.jpg" id="home"  >
</div>
<div name="header2">
<form name="result" method="post" action="">
<Table class="tabb" align="center" >
<th>
<font size="5px" color="#B22222">RESULT</font>
</th>

   <tr><td><input type="textarea" rows="6" cols="50"   name="resultDisplay" placeholder="click result to check the result" class="textarea"></td></tr>
        </table>
        <center><div name="header3" class="last"><input type="submit" name="sub" value="RESULT" onclick="validate();" class="btn" ></div></center>
</form>
</div>
</body>
</html>
<?php
$display= "";

if(isset($_REQUEST['sub']))

$db = mysqli_connect("localhost","root","","election");
if($db->connect_error)

    die("connection failed".$db->connect_error);

   
else

    $sql="SELECT name, Max(votes) as vote FROM cr group by name";
    $res=mysqli_query($db,$sql);
    //$name=$res['name'];
    //$votes=$res['votes'];
    echo '<textarea>'.$res['name'].' - '.$res['vote'].'</textarea>';
    //$display .= '<div>'.$name.' '.$votes.'</div>';
   

?>

【讨论】:

它说Cannot use of type mysqli_result as array in blah blah ... 他的 SQL 不是问题。您的示例不起作用,因为 mysqli_query() 不返回数组... 得到了输出...$sql="SELECT name,votes FROM cr WHERE votes = (SELECT Max(votes) FROM cr)"; $res=mysqli_query($db,$sql); while ($row = mysqli_fetch_array($res)) echo '';回声''。 $row['votes'] .''; 【参考方案2】:

原始问题包含许多错误,这些错误大多似乎由 cmets 对问题和其他答案进行了区分,此响应仅限于与结果显示相关的部分代码

为了得到结果,你应该使用一个循环(假设你没有错误)来访问每一行数组和正确的索引来获取每一列

 while ($row = mysqli_fetch_array($res))
    

         echo '<textarea>'. $row['name'] .'</textarea><br/>';
         echo '<textarea>'. $row['votes'] .'</textarea><br/>';
    

【讨论】:

@MagnusEriksson .. 正确 ..(我更喜欢点连接) 正如我在 cmets 中所述,他们的代码中还有很多其他错误。 @scaisEdge 恕我直言,答案不完整;它并没有完全涵盖所有错误,即使我在 cmets 中有(并且出于多种原因不想发布答案)。如果我的 cmets 碰巧消失了(这完全有可能),那么该问题的未来读者可能不会知道真正的(完整)解决方案。解决方案不应基于 cmets。 @scaisEdge 如果我的 cmets 消失了怎么办? lol!! 无论如何......我认为这是一个糟糕的问题。我喜欢你和所有人,但考虑到你的代表和经验,你应该把所有这些都放在你的答案中,而不是依赖于 cmets。 @scaisEdge 我不时删除 cmets(我可以,它们是我的 lol)。我不是要您删除答案,因为它确实解决了“直接”问题;循环(成功)结果。但是,您必须考虑未来读者的问题。他们中的一些人甚至可能是(低代表)成员,他们认为他们可以发布部分答案。这样做只会发出错误的信息。我想你可以同意我的观点。

以上是关于在数据库的表中如何获取表中各项名称:编号.姓名.性别...的主要内容,如果未能解决你的问题,请参考以下文章

从 MS Access 中的表中获取自动编号字段值

mysql创建表

如何从表中检索票数最高的候选人姓名[关闭]

如何从sqlite +phonegap中的表中获取第一列名称

jpa中生成的表中的错误排序

如何从给定表中获取唯一列?