mysql_fetch_array () ошибка при отправке формы для себя - PullRequest
0 голосов
/ 29 декабря 2011

У меня есть страница с именем 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 ]

1 голос
/ 29 декабря 2011

Попробуйте:


$value = (int) $value;
$sql_runners_up = "SELECT code from some_table where number = $value";
$plans['p_h10'] = array();
$rs2 = mysql_query( $sql_runners_up);

1 голос
/ 29 декабря 2011

попробуйте с этим:

$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"];
}
1 голос
/ 29 декабря 2011

Это потому, что mysql_query вернул false. Кроме того, в вашем коде есть синтаксическая ошибка

$value = $_POST['value'];

Кроме того, ваш код уязвим. Не доверяйте вводу пользователя!

так, правильный код будет

$value = intval($_POST['value']);
0 голосов
/ 29 декабря 2011

Прежде всего, эта строка недействительна:

$value = $_POST['value]; 

Это должно быть $_POST['value'];

Но эта ошибка обычно возникает, когда в вашем запросе есть ошибка или соединение плохое. Проверьте настройки mysql_connect() & mysql_select_db(), возможно, это плохо.

0 голосов
/ 29 декабря 2011

похоже, что вы сделали опечатки ...

    <?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"];
    } ?>

также ваша форма не является параметрами POSTing ... потому что 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...