我正在尝试从DATA中创建一个简单的回声。
它始终是空白的。
以下是代码:
<?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);
?>
如果有人可以帮助并告诉我我做错了什么,我们将不胜感激:)
答案 0 :(得分:2)
如果有效,你没有得到ID,而是“mysqli_result”对象。
尝试print_r($ retval)来查看你真正得到的东西。
如果它是mysqli_result对象,则需要另一步来获取数据。
while ($row = $retval->fetch_assoc()) {
echo $row['id'];
}
答案 1 :(得分:2)
根据manual:
失败时返回FALSE。对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个mysqli_result对象。对于其他成功的查询,
mysqli_query()
将返回TRUE。
此外,请注意,运行但返回零结果的查询仍被视为&#34;成功查询&#34; ,因为查询确实在数据库中运行,而空结果集是合法的回应。这意味着查询仍将返回mysqli_result
个对象。
据我所知,到目前为止,如果您想要 echo 返回结果,您可以使用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);
答案 2 :(得分:1)
您知道您是否已连接到数据库?您可以尝试更改值以查看错误是否出现。
如果不是问题,这应该会更好:
$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”。
答案 3 :(得分:0)
感谢您的回答,人们! 我最终得到了这个:
$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);
}
?>