我对PHP很陌生(刚刚选择了CS课程)我现在正试图从数据库中显示一些值,即股票。现在我遇到了一些问题,因为我试图在一个不错的选项菜单中显示数据库中的股票代码。但是当我尝试通过$ _POST [" stock"](" stock"是选项的名称)检索值时,它会显示错误" Undefinex index:股票"
现在,如果我选择上面的选项(php代码之前的选项),它实际上是完美的,并且" stock"是可检索的(并且没有显示任何内容,如预期的那样)。
现在我的问题是:我做错了什么,如何命名" stock"显示$ _POST [" stock"]
的值 <select class="form-group">
<option class='form-control' type='text' name='stock'></option>
<?php
$rows = query("SELECT * FROM stocks WHERE id = ?", $_SESSION["id"]);
foreach ($rows as $row)
{
print("<option class='form-control' name='stock'>{$row["symbol"]}</option>");
}
?>
</select>
答案 0 :(得分:1)
您通常应始终检查$_POST
中的密钥是否存在以避免undefined index
问题,如果定义如下所示,您还可以检查它是否为空。
E.g。
$stock = isset( $_POST["stock"] ) && !empty( $_POST["stock"] ) ? $_POST["stock"] : '';
不是速记:
$stock = '';
if ( isset( $_POST["stock"] ) && !empty( $_POST["stock"] ) ) {
$stock = $_POST["stock"];
}
修改
$_POST['stock']
未定义的原因是因为您的<select>
元素缺少已定义的名称,而是在子项上定义了名称。
变化:
<select class="form-group">
要:
<select class="form-group" name="stock">
另外,请务必从所有name
元素中删除<option>
属性。
答案 1 :(得分:0)
从双引号中提取动态参数,并在打印时用点分隔。在使用发布的数据之前也使用php isset
(特别是当第一个选项具有空值时):
<select class="form-group">
<option class='form-control' type='text' name='stock'></option>
<?php
$rows = query("SELECT * FROM stocks WHERE id = ?", $_SESSION["id"]);
foreach ($rows as $row)
{
print "<option class='form-control' name='stock'>{".$row["symbol"]."}</option>";
}
?>
</select>
答案 2 :(得分:0)
您需要添加属性名称以选择不在options.use中,如此
<select class="form-group" name="stock">
<option class='form-control' type='text'></option>
<?php
$rows = query("SELECT * FROM stocks WHERE id = ?", $_SESSION["id"]);
foreach ($rows as $row)
{
print("<option value='".$row["symbol"]."' class='form-control'>".$row["symbol"]."</option>");
}
?>
</select>
然后使用php,当您尝试使用$_POST['stock']
获取值时,它将返回您选择的选项值。即该选项中的$row["symbol"]
值。
答案 3 :(得分:0)
你有几个问题,严重问题主要是基于HTML的。
1)为了使用POST变量,您需要设置FORM以通过post发送数据,这是通过您可能已经拥有或可能没有的method
标签完成的,但是:
<form method="post">
2)使用HTML,需要定义所选选项的VALUE,例如你有
print("<option class='form-control' name='stock'>{$row["symbol"]}</option>");
但是这样做会发送""
(如果有的话)值,因为没有定义任何值。而是将其写为:
print("<option class='form-control' name='stock' value='stockvalue'>{$row["symbol"]}</option>");
作为一个额外的 - &#34;名称&#34;属性需要显示在<select>
元素中,value
元素中只需要<option>
属性。
这样:
print("<option class='form-control' value='stockvalue'>{$row["symbol"]}</option>");
3)除非你自己创造了自己的功能,否则query
不是公认的功能?您可能需要mysqli_query()
。
4)次要重新格式化:不要对数组键使用双引号,您的数组应为:$rows['symbol']
。
同样,当将变量打印到print
命令时,养成塑造它的习惯:
print "<option class='form-control' name='stock' value='stockvalue'>".$row['symbol']."</option>";
这将停止使用.
字符进行打印,并附加原始PHP变量值$row
,然后将其附加到.
字符串的其余部分以进行打印。
打印也不需要在括号中。