繁体   English   中英

如何使用php和mysql从数据库一次提取一行

[英]How to pull one row at a time from the database using php and mysql

我正在创建一个调查问卷,询问用户问题,以便根据他们的答案来确定最适合该用户的专业。 我想一次显示一个问题。 用户应该能够按下下一步按钮,并且数据库中存储的下一个问题将出现在屏幕上。 现在,我的代码可以在其中显示数据库中第一个问题的位置,但是我仍然需要使下一个按钮起作用。 由于数据库中存储了60个问题,因此我需要一种有效的方法。 任何帮助是极大的赞赏! 以下是我的问卷调查外观的图片!

调查链接

下面是我的代码!

$dbhost = "localhost";
$dbuser = "root";
$dbpass = "Cherries7";

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn )
{
        die('Could not connect: ' . mysql_error());
}

$id = 1;        //global variable that represents id

$sql = "SELECT questiontext FROM md WHERE ID= '$id'" ;
mysql_select_db('MajorDecider');
$retval = mysql_query( $sql, $conn );
$nr = mysql_num_rows($retval);

if(! $retval ) {
        die('Could not get data: ' . mysql_error());
}

else if($nr == 0) {
    echo "<h2>Question not found.</h2>";
}

//there should only be one question with specified id number
else if($nr == 1) {
    $row = mysql_fetch_array($retval);
    echo " <form  method='POST'>
    <section id='question'><table id='questions'> 
    <tr> 
        <td> {$row['questiontext']} </td> 
        <td> <input type='radio' name='choose' id='interested' value='true' /> Yes </td> 
        <td> <input type='radio' name='choose' id='uninterested' value='false' /> No </td>          
        <td> <button name='next'>Next</button> </td> 
    </tr> 
    </table></section></form> ";
}

在表单中添加一个隐藏的输入,其中包含行ID。

<input type='hidden' name='id' value='{$row['ID']}'>

然后,在执行查询之前,请在$_POST检查ID。 如果那里有一个,增加它并使用它。

$id = 1;
if (isset($_POST['id'])) {
    $id = $_POST['id'] + 1;
}

您需要稍微修改一下查询,以便它也选择ID列。 另外,如果使用>=而不是> ,则在缺少任何ID的情况下仍然可以使用。

$sql = "SELECT ID, questiontext FROM md WHERE ID >= '$id' ORDER BY ID";

注释中已经提到了另外两件事,但有两点要重申。 首先,您正在使用mysql扩展,PHP不再支持该扩展。 您需要更新代码以使用mysqliPDO 其次,当您直接在SQL中使用变量时(例如WHERE ID >= '$id' ),您很容易受到SQL注入的攻击。 将您的值绑定到准备好的语句将减少该漏洞。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM