在数据库的表中如何获取表中各项名称:编号.姓名.性别...
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在数据库的表中如何获取表中各项名称:编号.姓名.性别...相关的知识,希望对你有一定的参考价值。
在操作数据库的表时.可用查询语句得到每行数据,得到具体哪一行的数据,可是我需要得到未知表中的各项的名称,例如:编号.姓名.性别...等.具体怎么做要用什么语句.
不只是要看到.还要得到并且要赋给一个字符型的变量,把它表示出来
用select name from sys.syscolumns where(id=(select id from sys.sysobjects where(name='student')))
中的好像就能得到一个项的名称?,前一个name与后一个name是不是同一个,id=...又是什么意思.(我刚学别说太深)
我用的是database数据库.PB的.打上你的那句报语法错.是不是系统文件不对?
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
那样。您需要while
或foreach
。这一切都在这个php.net/manual/en/mysqli.query.php的手册中,网上也有很多教程。
你也很有可能在标题之前输出 session_start();
的位置 - 这应该高于输出,错误报告会触发标题发送警告 php.net/manual/en/function.error-reporting.php - 如果你不是分配任何会话数组,然后您可以安全地删除它。
<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)。我不是要您删除答案,因为它确实解决了“直接”问题;循环(成功)结果。但是,您必须考虑未来读者的问题。他们中的一些人甚至可能是(低代表)成员,他们认为他们可以发布部分答案。这样做只会发出错误的信息。我想你可以同意我的观点。以上是关于在数据库的表中如何获取表中各项名称:编号.姓名.性别...的主要内容,如果未能解决你的问题,请参考以下文章