向自己提交表单时出现mysql_fetch_array()错误

时间:2011-12-29 10:36:36

标签: php mysql html forms

我有一个名为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表单。但说实话,我真的不确定。任何帮助将不胜感激。

5 个答案:

答案 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>