我有一个简单的页面,它基本上从用户获取唯一的输入文本,并查询数据库以查看是否属于该输入的任何联系人记录。到目前为止,我知道连接已建立并且它正在尝试查询数据库。 但是,没有检索到记录。这就是代码的样子:
<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">
</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
我的结果
有人可以提供一些见解,为什么会出现这种情况?
答案 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语句是这样的:
选择
FirstName
,LastName
,Confirmed
,InviteCode
,PlusOnes
来自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'];
}
试试这个。我假设你将处理你在那里的所有成员的行。它将通过您想要的任何信息遍历所有行。