Php mysql_fetch_array()向self提交表单时出错
我有一个名为index.html的页面,它从用户那里接收一些变量,当用户提交它们时,它会转到results.php上的下一个页面(result.php)。index.html上表单中的变量会被发布。php连接到数据库,运行查询等。所有这些都可以正常工作。results.php如下所示:Php mysql_fetch_array()向self提交表单时出错,php,mysql,html,forms,Php,Mysql,Html,Forms,我有一个名为index.html的页面,它从用户那里接收一些变量,当用户提交它们时,它会转到results.php上的下一个页面(result.php)。index.html上表单中的变量会被发布。php连接到数据库,运行查询等。所有这些都可以正常工作。results.php如下所示: <?php $h = "localhost"; $u = "root"; $p = "******"; $d = "********"; //connectipn to mysql $conn = mysq
<?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"];
}
?>
看起来你打字打错了
<?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"];
} ?>
这是因为mysql\u query
返回false。
另外,在您的代码中,有一个语法错误
$value = $_POST['value'];
此外,您的代码易受攻击。不要相信用户的输入
所以,正确的代码应该是
$value = intval($_POST['value']);
首先,此行无效:
$value = $_POST['value];
它应该是$\u POST['value']代码>
但是,此错误通常发生在查询出错或连接不好时。检查您的mysql\u connect()
&mysql\u select\u db()
设置,可能不好。尝试以下方法:
$sql_runners_up = "SELECT * from some_table where number = '$value';"
并检查$value
是否包含该值
编辑:在上面的代码中,我使用*
选择所有字段,因为您在代码中看到的是:
$sql_runners_up = "SELECT code from some_table where number = $value;"
在fetch查询中,您正在调用字段名p_h10
:
while ( $row = mysql_fetch_array( $rs2 ))
{
// didn't selected $row["p_h10"] in your query
$plans['p_h10'][] = $row["p_h10"];
}
尝试:
您的代码易受攻击。查看一些关于SQLi的文章
$sql_runners_up = "SELECT code from some_table where number = $value;"
while ( $row = mysql_fetch_array( $rs2 ))
{
// didn't selected $row["p_h10"] in your query
$plans['p_h10'][] = $row["p_h10"];
}
$value = (int) $value;
$sql_runners_up = "SELECT code from some_table where number = $value";
$plans['p_h10'] = array();
$rs2 = mysql_query( $sql_runners_up);