35

配列に配置することなく、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;
}
4

8 に答える 8

41

どうですか

$name = $mysqli->query("SELECT name FROM contacts WHERE id = 5")->fetch_object()->name; 
于 2014-06-03T10:08:12.973 に答える
28

mysql拡張機能はmysql_resultを使用してこれを行うことができますが、mysqliには今日の時点で同等の機能がありません(afaik)。常に配列を返します。

レコードを作成しただけではない場合は、次のようにします。

$getID = mysqli_fetch_assoc(mysqli_query($link, "SELECT userID FROM users WHERE something = 'unique'"));
$userID = $getID['userID'];

または、レコードを作成したばかりで、userID列がAIの場合は、次のようにします。

$userID = mysqli_insert_id($link);
于 2012-09-17T23:55:35.240 に答える
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] : "";
}
于 2013-02-13T22:37:09.583 に答える
4

これが私が最終的に得たものです:

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];
}

このようにして、クエリに含めるLIMIT 1のを忘れた場合 (すべて実行済みです)、関数はそれを追加します。

使用例:

$first_name = get_col("SELECT `first_name` FROM `people` WHERE `id`='123'");
于 2014-03-24T23:51:47.827 に答える
3

これは古いトピックでもありますが、このような割り当てに使用していた非常に単純な方法はここにはありません。

list($value) = $mysqli->fetch_array;

1 つだけでなく、複数の変数を直接割り当てることができるため、配列の使用を完全に避けることができます。詳細については、php 関数list()を参照してください。

于 2015-02-23T21:53:58.187 に答える