我有一个名为index.html的页面,它从用户那里获取一些变量,当用户提交它们时,它转到下一页(result.php)在results.php上从索引表单中的变量.html已发布。 results.php连接到数据库运行查询等。所有这一切都正常。 results.php看起来像这样:
<?php
$h = "localhost";
$u = "root";
$p = "******";
$d = "********";
//connectipn to mysql
$conn = mysql_connect( $h, $u, $p );
//connection to database
mysql_select_db($d);
$code = $_POST['code'];
$usage = $_POST['usage'];
$days = $_POST['days'];
$value = $_POST['value];
$sql_runners_up = "SELECT code
from some_table
where number = $value;"
$plans['p_h10'] = array();
$rs2 = mysql_query( $sql_runners_up, $conn );
while ( $row = mysql_fetch_array( $rs2 ))
{
$plans['p_h10'][] = $row["p_h10"];
}
?>
results.php还有一个表单,用户可以更新查询中使用的某些字段。我目前的形式看起来像这样......
<form action="results.php" name="filter" method="post">
usage:<input name="" type="search" value="" /><br/>
days:<input name="" type="search" value="" /><br/>
<input name="" type="checkbox" value="" />value<br />
<input type="submit" value="submit" name="submit" />
</form>
即使用户提交表单时出现空白,我也会收到错误(我已尝试填写表单以使用实际变量,但仍然会收到相同的错误)
警告:mysql_fetch_array():提供的参数不是有效的MySQL 结果资源
错误是指while语句周围的行。我的猜测是在提交表单后没有传递某些变量/ s,或者服务器没有提交/处理整个results.php表单。但说实话,我真的不确定。任何帮助将不胜感激。
答案 0 :(得分:1)
那是因为mysql_query
返回false。
此外,在您的代码中,您有语法错误
$value = $_POST['value'];
此外,您的代码容易受到攻击。不要相信用户的输入!
所以,正确的代码将是
$value = intval($_POST['value']);
答案 1 :(得分:1)
试试这个:
$sql_runners_up = "SELECT * from some_table where number = '$value';"
并检查$value
是否包含值..
编辑我使用*
选择了所有字段,原因是您在代码中看到的:
$sql_runners_up = "SELECT code from some_table where number = $value;"
并在获取查询中,您要调用字段名称p_h10
:
while ( $row = mysql_fetch_array( $rs2 ))
{
// didn't selected $row["p_h10"] in your query
$plans['p_h10'][] = $row["p_h10"];
}
答案 2 :(得分:1)
尝试:
$value = (int) $value;
$sql_runners_up = "SELECT code from some_table where number = $value";
$plans['p_h10'] = array();
$rs2 = mysql_query( $sql_runners_up);
答案 3 :(得分:0)
首先,此行无效:
$value = $_POST['value];
应为$_POST['value'];
但是,通常在查询中出现错误或连接错误时会发生此错误。检查您的mysql_connect()
&amp; mysql_select_db()
设置,可能不好。
答案 4 :(得分:-1)
看起来你做了错别字......
<?php
$h = "localhost";
$u = "root";
$p = "******";
$d = "********";
//connectipn to mysql
$conn = mysql_connect( $h, $u, $p );
//connection to database
mysql_select_db($d);
$code = $_POST['code'];
$usage = $_POST['usage'];
$days = $_POST['days'];
$value = $_POST['value']; // here
$sql_runners_up = "SELECT code
from some_table
where number = $value"; // and here
$plans['p_h10'] = array();
$rs2 = mysql_query( $sql_runners_up, $conn );
while ( $row = mysql_fetch_array( $rs2 ))
{
$plans['p_h10'][] = $row["p_h10"];
} ?>
您的表单也不是POST参数...因为未设置name
属性
<form action="results.php" name="filter" method="post">
usage:<input name="usage" type="search" value="" /><br/>
days:<input name="days" type="search" value="" /><br/>
<input name="value" type="checkbox" value="" />value<br />
<input type="submit" value="submit" name="submit" />
</form>