0

この関数にクエリを渡しますquery("SELECT * FROM table_name");

そして機能は

public function query($sql) {

        $resource = mysql_query($sql, $this->link_web);

        if ($resource) {
            if (is_resource($resource)) {
                $i = 0;

                $data = array();

                while ($result = mysql_fetch_assoc($resource)) {
                    $data[$i] = $result;

                    $i++;
                }

                mysql_free_result($resource);

                $query = new stdClass();
                $query->row = isset($data[0]) ? $data[0] : array();
                $query->rows = $data;
                $query->num_rows = $i;

                unset($data);

                return $query;  
            } else {
                return true;
            }
        } else {
            trigger_error('Error: ' . mysql_error($this->link_web) . '<br />Error No: ' . mysql_errno($this->link_web) . '<br />' . $sql);
            exit();
        }
    }

クエリにもクエリを追加tenent_id = '1'したい。同様に、私はそれを行う必要があります。SELECTINSERTUPDATE

このようなクエリを持ってきたい

SELECT * FROM table_name WHERE tenent_id = 1 and user_id = 1

INSERT INTO table_name('tenant_id, user_id') VALUE('1','1')

UPDATE table_name SET user_id = 1 WHERE tenant_id = '1'

tenant_idselect、insert、およびupdateに挿入する方法について誰か教えてください

前もって感謝します

4

2 に答える 2

0

単なるクエリ関数ではなく、正しい mysql 関数を使用することをお勧めします。

たとえば、データベース内の多くの項目を循環させたい場合は、while ループを使用できます。

$query = mysql_query("SELECT * FROM table WHERE type='2'");
while($row = mysql_fetch_array($query)){
    echo $line['id'];
}

これにより、タイプ 2 を持つデータベース内のすべての ID がエコーされます。

同じ原則は、オブジェクトがある場合、mysql 関数を使用して、データを返す方法を指定できることです。上記では、それを配列で返しました。ここでは、単一の行をオブジェクトとして返します。

$query = mysql_query("SELECT * FROM table WHERE id='1'");
$object = mysql_fetch_object($query);
echo $object->id;
echo $object->type;
echo $object->*ANY COLUMN*;

これは次のように返されます: 1. 2. その列の値が何であれ


データを挿入するために、「query()」を実行する必要はありません。mysql_query($sql) を簡単に使用できます。これにより、今後の生活がずっと楽になります。

また、データを適切に処理できるように、関数内で 1 つのクエリを実行することをお勧めします。

mysql_query("INSERT...");
mysql_query("UPDATE...");
mysql_query("SELECT...");

お役に立てれば。

于 2013-04-11T11:24:33.937 に答える
0

簡単な答えは、クエリに条件を追加するだけです。コールしquery("SELECT * FROM table_name WHERE tenant_id = 1 and user_id = 1")ます。

SQL クエリに渡すパラメータをエスケープすることに懸念がある場合 (そうするべきです!)、手動で行うことができます。

$query = sprintf("SELECT * FROM table_name WHERE tenant_id = %d", intval($tenant_id));
query($query);

または、 mysqli拡張機能によって提供される準備済みステートメントを使用することをお勧めします (とにかく mysql_query は非推奨です)。

$stmt = $mysqli->prepare("SELECT * FROM table_name WHERE tenant_id = ?");
$stmt->bind_param("i", $tenant_id);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
    // ...
}

まだ質問に答えていない場合は、dibiなどのライブラリを使用してクエリを処理できます。

$result = dibi::query('SELECT * FROM [table_name] WHERE [tenant_id] = %i', $id);
$rows = $result->fetchAll(); // all rows

最後のオプションは私が使用するものです。独自のクエリ処理関数を記述してクエリ パラメーター バインディングを無料で取得する必要はありません。あなたの場合、WHERE条件が基本的なクエリの一部にならないように、クエリを徐々に構築することを利用できます。

$query[] = 'SELECT * FROM table_name';
if ($tenant_id){
    array_push($query, 'WHERE tenant_id=%d', $tenant_id);
}
$result = dibi::query($query);
于 2013-04-11T11:43:43.947 に答える