所以,我正在用PHP编写应用程序,我正在尝试根据他们输入的内容检索唯一的用户数据。这是我的代码:
function hello($username123) {
// Connect to Database //
$host3 = "db";
$username3 = "db";
$password3 = "db";
$db3 = "db";
$con3 = mysqli_connect($host3,$username3,$password3,$db3) or die("Can not connect to Server.");
$student1name;
$query3 = mysqli_query($con3,"SELECT * FROM 'users' WHERE 'username' = '$username123' and '$student1name' = 'student1'");
return "$student1name";
}
因此,用户输入他们之前注册的用户名,然后我运行一个查询,其中username字段等于username变量(输入),并且student1name变量等于student1字段,其中用户名是与输入的相同。然后我返回student1name变量。但是,当我测试这一切时,返回的是“”。我无法弄清楚问题
答案 0 :(得分:0)
您没有获取查询结果,请在查询后尝试这样的内容。
$row = mysqli_fetch_array($query3, MYSQLI_ASSOC);
return $row['studentname'];
我假设学生的名字在数据库中名为studentname的列中
答案 1 :(得分:0)
您必须将结果绑定到结果数组中并像这样访问它,这样的事情应该起作用:
return $query3["student1name"];
可能更有效。
如果您只在查询中选择一个变量,那么您只需回显$ query3。
如果您查看准备好的陈述,它也会更有效。
请注意
$student1name
没有做任何事情,因为你永远不会给它一个合适的价值。
答案 2 :(得分:0)
PHP会自动将您在字符串中使用的任何变量替换为该变量的值。例如,如果$ student1name ='foo',那么将$ student1name放在SELECT语句的任何位置,就会输出一个字符串'foo'来代替该变量。就mysqli语句而言,您没有使用PHP值,而是使用文字字符串'foo'。因此,期望你的$ student1name var基于sql语句神奇地改变是不会发生的。
要检索列的值,您需要在执行查询后获取结果行:
if ($row = $query3->fetch_assoc()) {
return $row["student1"];
}
如果您期望多个结果行,那么您只需要为每一行再次调用fetch_assoc(),直到它不返回任何内容(标记结果行的结尾)。