我正在尝试从数据库中选择创建一个简单的回声。
它始终回显空白。
这是代码:
<?php
$username = "xxxx";
$password = "xxxx";
$hostname = "xxxx";
$conn = mysqli_connect($hostname, $username, $password, "xxxx");
if(! $conn ) {
die('Could not connect: ' . mysqli_error());
}
$user = $_GET['user'];
$pass = $_GET['pass'];
$sql = "SELECT id FROM 'users' WHERE user='$user' AND pass='$pass'";
$retval = mysqli_query($conn, $sql);
echo($retval);
mysqli_close($conn);
?>
如果有人能帮助并告诉我我做错了什么,将不胜感激:)
如果它有效,你不会得到ID,而是一个"mysqli_result"对象。
尝试print_r($retval)看看你真正得到了什么。
如果它是mysqli_result对象,则需要另一个步骤来获取数据。
while ($row = $retval->fetch_assoc()) {
echo $row['id'];
}
根据手册:
失败时返回 FALSE。对于成功的选择、显示、描述或解释查询,mysqli_query() 将返回一个mysqli_result对象。对于其他成功的查询,
mysqli_query()
将返回 TRUE。
此外,请注意,运行但返回零结果的查询仍被视为"成功查询">,因为查询确实在数据库中运行,并且空结果集是合法响应。这意味着查询仍将返回mysqli_result
对象。
根据我到目前为止对代码的理解,如果你想回显返回的结果,你可以使用mysqli_fetch_array()
,所以你的代码将变成:
/* numeric array */
$row = mysqli_fetch_array($retval, MYSQLI_NUM);
您可以将其回显为:
echo $row[0];
或
/* associative array */
$row = mysqli_fetch_array($retval, MYSQLI_ASSOC);
然后你可以回显为:
echo $row['id'];
此外,您可以使用mysqli_fetch_assoc()
来循环结果或获取单行实例,例如:
while ($row = $result->fetch_assoc()) {
echo $row['id'];
}
返回一个字符串的关联数组,该数组表示结果集中的读取行,其中数组中的每个键表示结果集的列之一的名称,如果结果集中没有更多行,则返回 NULL。
如果要检查查询是否找到任何行,可以使用mysqli_num_rows
其工作原理如下:
/* determine number of rows result set */
$row_cnt = mysqli_num_rows($retval);
您知道是否已连接到数据库吗?您可以尝试更改值以查看是否出现错误。
如果这不是问题,这应该更好:
$host = 'xxxx';
$user = 'xxxx';
$pass = 'xxxx';
$db = 'xxxx';
$mysqli = new mysqli($host,$user,$pass,$db) or die($mysqli->error);
$sql = "SELECT id FROM 'users' WHERE user='$user' AND pass='$pass'";
$result = $mysqli->query($sql);
while($row = $result->fetch_assoc()) {
$whateverString = $row['cakes'];
}
echo $whateverString;
现在假设您在 mysql 行中有一个名为 cakes 的值等于 5,那么如果用户和传递正确,它将从该行中获取该特定字符串。
因此,如果 mysql 值"cakes"为 5,则上面的值将输出"5"。
谢谢你的回答,人们! 我最终得到了这个:
$q=mysqli_query($con,"SELECT id FROM `users` WHERE user='$username' and pass='$password'");
while ($row=mysqli_fetch_object($q)){
$data[]=$row;
}
if(json_encode($data)== '[]'){
echo 'error';
}else {
echo json_encode($data);
}
?>