Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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 mySQL简单回音来自SELECT_Php_Mysql - Fatal编程技术网

PHP mySQL简单回音来自SELECT

PHP mySQL简单回音来自SELECT,php,mysql,Php,Mysql,我试图从SELECT from DB创建一个简单的回音 它总是一片空白 代码如下: <?php $username = "xxxx"; $password = "xxxx"; $hostname = "xxxx"; $conn = mysqli_connect($hostname, $username, $password, "xxxx"); if(! $conn ) { die('Could not connect: ' . mysqli_error()); } $user

我试图从SELECT from DB创建一个简单的回音

它总是一片空白

代码如下:

<?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”对象

试着打印($retval)看看你真正得到了什么

如果是mysqli_结果对象,则需要另一个步骤来获取数据

while ($row = $retval->fetch_assoc()) {
    echo $row['id'];
}
根据报告:

失败时返回FALSE。为了成功地选择、显示、描述或解释查询,mysqli_query()将返回一个mysqli_结果对象。对于其他成功的查询,
mysqli\u query()
将返回TRUE

此外,请注意,运行但返回零结果的查询仍然被视为“成功查询”,因为查询确实在数据库中运行,空结果集是合法响应。这意味着查询仍将返回
mysqli\u结果
对象

正如我迄今为止对代码的理解,如果您希望回显返回的结果,您可以使用,因此您的代码将变成:

/* numeric array */
$row = mysqli_fetch_array($retval, MYSQLI_NUM);
你可以这样回应:

然后你可以回应为:

此外,您可以使用来循环结果或获取单行实例,例如:

while ($row = $result->fetch_assoc()) {
    echo $row['id'];
}
返回表示结果集中提取行的字符串的关联数组,其中数组中的每个键表示结果集中某个列的名称,如果结果集中没有更多行,则返回NULL

如果要检查查询是否找到任何行,可以使用

其工作原理如下:

/* 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,如果用户和pass是正确的,那么它将从该行获取该特定字符串


因此,如果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);
}
?>

请记住,像这样传递变量将导致SQL注入
/* 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;
    $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);
}
?>