尝试输出存储在MySql中的记录

时间:2017-05-18 13:40:05

标签: php mysql

我有一个简单的页面,它基本上从用户获取唯一的输入文本,并查询数据库以查看是否属于该输入的任何联系人记录。到目前为止,我知道连接已建立并且它正在尝试查询数据库。 但是,没有检索到记录。这就是代码的样子:

<form action="processAttendance.php" method="POST">
  <div class="input">
    <input type="text" class="button" id="inviteCode" name="inviteCode" placeholder="Enter invite code i.e. E2562SA">
    <input type="submit" class="button" id="submit" value="Register"> &nbsp;
  </div>
</form>

<?php  
include 'dbh.php';
$inviteCode = $_POST['inviteCode'];
echo $inviteCode;
$sql = "SELECT `FirstName`, `LastName`, `Confirmed`, `InviteCode`, `PlusOnes` FROM `Guest` WHERE 'InviteCode' = '$inviteCode'";
$result = $conn->query($sql);
$row = mysqli_fetch_assoc($result);
echo "my result" . $row."<br>";
echo "my result" . $row['classtype'];

打印的结果如下:

TEST

my resultArray

我的结果

有人可以提供一些见解,为什么会出现这种情况?

4 个答案:

答案 0 :(得分:1)

您没有正确提取行。您正在使用mysqli OOP,因此您应该使用->fetch_assoc(),并且需要迭代结果以获取行。像这样:

$sql = "SELECT `FirstName`, `LastName`, `Confirmed`, `InviteCode`, `PlusOnes` FROM `Guest` WHERE 'InviteCode' = '$inviteCode'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {

        echo "<pre>";
        print_r($row);
        echo "</pre>";

        echo "my FirstName: " . $row['FirstName'];
    }
} else {
    echo "No results";
}
$conn->close();
顺便说一句,你应该使用预备语句来阻止sql注入。

答案 1 :(得分:0)

  

但是,没有检索到记录

不正确的。如果你没有得到你不会得到的记录:

  

我的resultArray

如果没有结果,

mysqli_fetch_assoc会返回NULL。你得到一个数组。

$row['classtype']是空白的,因为您在所选字段列表中未包含classtype

答案 2 :(得分:0)

你的sql语句是这样的:

  

选择FirstNameLastNameConfirmedInviteCodePlusOnes   来自Guest WHERE&#39; InviteCode&#39; =&#39; $ inviteCode&#39;

您正在尝试输出$row['classtype'],但请查看SQL的SELECT部分,该列未被选中。

使用classtype到sql语句使其可用,假设它是表中的一个字段。

SELECT `classtype` FROM `Guest` WHERE 'InviteCode' = '$inviteCode'

获得$row后,您可以运行语句var_dump($row)来输出整个对象。

答案 3 :(得分:-1)

这是我使用的方法:

for($ row as $ data){

echo $data['classtype'];

}

试试这个。我假设你将处理你在那里的所有成员的行。它将通过您想要的任何信息遍历所有行。