php在尝试获取MySQL数据时返回空GET阵列

问题描述:

我正在尝试为我的移动后端与MySQL数据库交互创建一个php REST API。我已经写了下面的代码,试图从中检索MySQL查询数据:php在尝试获取MySQL数据时返回空GET阵列

<?php include "FILE WITH DB_INFO"; ?> 
    <html> 
    <body> 
    <h1>Testing page</h1> 
<?php 

$connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD); 

if (mysqli_connect_errno()) echo "Failed to connect to MySQL" . mysqli_connect_error(); 


$database = mysqli_select_db($connection, DB_DATABASE); 

if (strlen($username_query)) { 
    doesUsernameExist($connection, $username_query); 
} 

doesUsernameExist($connection, $username_query); 

$username_query = $_GET['usernameToQuery']; 

echo($_GET['usernameToQuery']); 


function doesUsernameExist($connection, $username) { 
    $u = mysqli_real_escape_string($connection, $username); 

    $query = "SELECT username from users WHERE username = ('$u');"; 


if (!mysqli_query($connection, $query)) { 
    $response = array("success" => false, "message" => mysqli_error($connection), "sqlerrno" => mysqli_errno($connection), "sqlstate" => mysqli_sqlstate($connection)); 
    echo json_encode($response); 
} else { 
    $sth = mysqli_query($connection, $query); 
    $rows = array(); 
    while($r = mysqli_fetch_assoc($sth)) { 
     $rows[] = $r; 
    } 
    $response = array("success" => true); 
    echo json_encode($rows); 
} 

} 
?> 

这是实际的请求是什么样子:http://my_ec2_instance/DoesUsernameExist.php?usernameToQuery=lmao。 这是通过POSTMAN发送的。

由于我使用的MySQL数据库包含值为lmao的用户名,PHP函数应返回非空数组。但json_encode($rows);行返回空数组[]。我究竟做错了什么。

+0

看样子你调用'doesUsernameExist()'两次,一次一个'if'语句中,一旦外界将这个你行之后。在这两种情况下,我都看不到为“$ username_query”赋值的位置。我对吗? – JBH

+0

@JBH无论回声应该输出的值。 @ Mr.Man检查你实际发送了一个GET请求,而不是POST。确保您的数据格式良好,等等......您还可以使用'print_r($ _ GET)' – Geoffrey

+0

'$ _Get ['usernameToQuery']'查看整个'$ _GET'数组到'$ username_query'。还是我没有以正确的方式做到这一点? –

看起来你可以拨打doUsernameExiste(),并在strlen之前用变量$username_query。但是你只能在后面定义$username_query

你应该先做你的做作。与mysqli_select_db

$username_query = $_GET['usernameToQuery'];

+0

请注意,设置值后的测试'echo'仍然应该输出值......这不能回答他的问题。 – Geoffrey

+0

Sheplu,谢谢! –

+0

你是对的,@Geoffrey。我忘记了他将变量值作为GET传递。奇怪的是,我无法删除这个答案。 – JBH