我正在尝试编写一个函数,它将使用mysqli检查数据库中的单个值,而不必将其放在数组中.除了我在这里做的事情,我还能做什么?
function getval($query){
$mysqli = new mysqli();
$mysqli->connect(HOST, USER, PASS, DB);
$result = $mysqli->query($query);
$value = $mysqli->fetch_array;
$mysqli->close();
return $value;
}
Run Code Online (Sandbox Code Playgroud)
小智 33
怎么样
$name = $mysqli->query("SELECT name FROM contacts WHERE id = 5")->fetch_object()->name;
Run Code Online (Sandbox Code Playgroud)
prl*_*l77 26
mysql扩展可以使用mysql_result来做到这一点,但mysqli没有今天的等效功能,afaik.它总是返回一个数组.
如果我不只是创建记录,我这样做:
$getID = mysqli_fetch_assoc(mysqli_query($link, "SELECT userID FROM users WHERE something = 'unique'"));
$userID = $getID['userID'];
Run Code Online (Sandbox Code Playgroud)
或者如果我只是创建记录而userID列是AI,我会:
$userID = mysqli_insert_id($link);
Run Code Online (Sandbox Code Playgroud)
始终最好在开始时创建一次连接,最后在结束时创建连接.这是我如何实现你的功能.
$mysqli = new mysqli();
$mysqli->connect(HOSTNAME, USERNAME, PASSWORD, DATABASE);
$value_1 = get_value($mysqli,"SELECT ID FROM Table1 LIMIT 1");
$value_2 = get_value($mysqli,"SELECT ID FROM Table2 LIMIT 1");
$mysqli->close();
function get_value($mysqli, $sql) {
$result = $mysqli->query($sql);
$value = $result->fetch_array(MYSQLI_NUM);
return is_array($value) ? $value[0] : "";
}
Run Code Online (Sandbox Code Playgroud)
这就是我最终得到的结果:
function get_col($sql){
global $db;
if(strpos(strtoupper($sql), 'LIMIT') === false) {
$sql .= " LIMIT 1";
}
$query = mysqli_query($db, $sql);
$row = mysqli_fetch_array($query);
return $row[0];
}
Run Code Online (Sandbox Code Playgroud)
这样,如果您忘记包含LIMIT 1
在查询中(我们都已经这样做了),该函数将附加它。
用法示例:
$first_name = get_col("SELECT `first_name` FROM `people` WHERE `id`='123'");
Run Code Online (Sandbox Code Playgroud)