单值Mysqli

Ref*_*ing 31 php mysqli

我正在尝试编写一个函数,它将使用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)

  • 这是获取mysqli结果值的最短代码行. (5认同)
  • 解释*为什么*您的代码解决了问题.见[答案]. (3认同)
  • 如果 `query` 失败,这将导致一个 `Fatal error`(在 boolean 上调用成员函数 fetch_object())。 (2认同)

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)

  • 或者将`assoc`改为`array`,然后你可以做`$ getID [0]` (3认同)

jbr*_*ahy 7

始终最好在开始时创建一次连接,最后在结束时创建连接.这是我如何实现你的功能.

$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)


ryb*_*111 5

这就是我最终得到的结果:

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)