我一直致力于我的第一个大型网站,并在尝试创建一个 PHP 函数时遇到问题,该函数根据调用函数时给出的条件返回一个值。
我在使用下面的代码时遇到了问题,我只能返回“DATABASE: 1”
function data_r_user($request, $username ) {
include("login/dbconnect.php");
$sqli = "SELECT " . $request . " FROM users WHERE username = " . $username;
$result = mysqli_query($dbconnect,$sqli ) or die();
return $result;
}
在搜索了一段时间后,我似乎发现问题是所有 SQL 查询都返回一个数组而不是一个字符串(我相信情况确实如此,如果我错了,抱歉)。
我认为返回单个结果会很容易,但事实并非如此。
所以基本上我想要一种从该函数返回单个结果的方法,我不关心它是过程的还是对象的。
最佳答案
强烈建议使用准备好的语句,所以请原谅我没有将您指向 mysqli_fetch_row而是向您展示如何安全地执行此操作:
function data_r_user($request, $username ) {
// you want require and only do it once
require_once("login/dbconnect.php");
$return = '';
// white list the allowed columns
$columns_allowed = array('id', 'username', 'firstname', 'lastname');
if (! in_array($request, $columns_allowed)) {
// if they ask for something not allowed give them nothing
return '';
}
/* create a prepared statement */
if ($stmt = mysqli_prepare($dbconnect, "SELECT " . $request . " FROM users WHERE username = ?")) {
/* bind parameters for markers */
mysqli_stmt_bind_param($stmt, "s", $username);
/* bind result variables */
mysqli_stmt_bind_result($stmt, $return);
/* fetch value */
mysqli_stmt_fetch($stmt);
}
return $return;
}
关于php - 如何将 MySQL 选择函数作为字符串返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40962680/