Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据用户的信息获取用户数据_Php_Mysql - Fatal编程技术网

Php 根据用户的信息获取用户数据

Php 根据用户的信息获取用户数据,php,mysql,Php,Mysql,第一个字段是web访问者在“cardname”点击提交时输入的字段,并被引导到另一个页面(dashboard2.php),在该页面上只显示其内容 Enter your cardname to access your content<br> <form action='dashboard2.php'> <input type='text' name='cardname'/><input type='submit' value='retrieve card'

第一个字段是web访问者在“cardname”点击提交时输入的字段,并被引导到另一个页面(dashboard2.php),在该页面上只显示其内容

Enter your cardname to access your content<br>
<form action='dashboard2.php'>
<input type='text' name='cardname'/><input type='submit' value='retrieve card'/>
</form>
</body>
输入您的卡名以访问您的内容
下面的页面是用户从第一个输入字段输入“cardname”后指向的页面。但是,我只希望第二页显示基于输入的cardname的信息。现在,它显示了表格中的每个卡片名、问题一、答案一

    <?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "flashcards";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT cardname, questionone, answerone FROM cards";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
     // output data of each row
     while($row = $result->fetch_assoc()) {
         echo "<br> ". $row["cardname"]. "  ". $row["questionone"]. " " . $row["answerone"] . "<br>";
     }
} else {
     echo "0 results";
}

$conn->close();

?>

您必须修改查询以接受
WHERE
子句。例如,
WHERE cardname=mysqli\u real\u escape\u string($conn,$\u GET['cardname'])
(任何表单的默认方法都是GET,除非您指定
method=“post”


您应该了解语句,并考虑使用PDO,

< P>看来,您希望执行所有的记录而不是显示。 通常,搜索返回与特定字段匹配的记录,除非在搜索中输入了特定ID或唯一值。我不确定情况是否如此

我很快就把它整理好了,但希望它能帮上忙

<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "flashcards";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// escape the string to avoid SQL injections
$searchEscaped = $conn->real_escape_string($_POST['cardname']);

// Check connection
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT cardname, questionone, answerone FROM cards WHERE cardname = '$searchEscaped' ";
$result = $conn->query($sql);

if ($result->num_rows > 0) {

    if($result->num_rows == 1){
        // only one result found, show just that
        $row = $result->fetch_assoc()
        echo "<br> ". $row["cardname"]. "  ". $row["questionone"]. " " . $row["answerone"] . "<br>"; 
    }else{
        // multiple rows found, show them all
        while($row = $result->fetch_assoc()) {
             echo "<br> ". $row["cardname"]. "  ". $row["questionone"]. " " . $row["answerone"] . "<br>";
         }
    }

} else {
     echo "0 results";
}

$conn->close();

?>

正如@JayBlanchard所说,并将
method=“post”
添加到您的表单标记中,现在您将获取$\u post数据并在SQL查询中使用它,我建议您使用准备好的语句。您没有对表单做任何操作。回答不错,但是做
if($result->num\u rows>0){if($result->num rows==1){
-一个就足够了。虽然
$row=$result->fetch_assoc(),但这里确实有语法错误
。要么是一个缺少的分号,要么是一个
的while
loop.fred-ii-那个分号很有魅力!谢谢你。@atokad5但是,这个答案需要相应地编辑,以供将来可能不知道如何处理它的读者使用。你应该告诉Ethan。这不取决于我们来修正其他人的答案;-)@atokad5 Thing是的。此答案包含POST数组,并且您的表单没有POST方法(如果没有隐含POST方法,则表单默认获取),不同于周杰伦的答案,周杰伦的答案完美地概括了所有内容。在我和其他人看来,我确信你接受了错误的答案。但是,嘿,这取决于你。我不会告诉你该怎么做,只是说这个答案没有反映你发布的问题/代码。这对未来的读者来说是很重要的问题/答案。注:这不是你的答案eatment,重要的是答案,它显示了代码和答案中的缺陷。