gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:56:03 25 4
gpt4 key购买 nike

我正在创建一项调查,询问用户问题,以便根据用户的答案确定最适合该用户的专业。我想一次显示一个问题。用户应该能够按下“下一步”按钮,数据库中存储的下一个问题将出现在屏幕上。现在我的代码可以正常工作,显示数据库中的第一个问题,但我仍然需要让下一个按钮正常工作。由于数据库中存储了 60 个问题,因此我需要一种有效的方法来执行此操作。任何帮助是极大的赞赏!下面是我的调查目前的样子!

Survey Link

下面是我的代码!

$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";
<小时/>

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

关于php - 如何使用 php 和 mysql 从数据库一次提取一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43007407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com