1

DBから結果を選択しようとしています。

私は複数のクエリを試し、準備もしています。

しかし、どちらも私には機能していません:(

$query = "SELECT u.id FROM user u;";
$stmt = $mysqli->prepare($query);
$stmt->execute();
$stmt->bind_result($id);

while($stmt->fetch()){
$query = "SELECT position FROM company WHERE id = $id";
$stmt2 = $mysqli->prepare($query);
$stmt2->execute(); // error HERE (line 16)
$stmt_send->bind_result($position);
while($stmt->fetch()){
    print $position;
}

エラーコードはこちら

PHP Fatal error:  Call to a member function execute() on a non-object in /var/www/test.php on line 16

同じ問題がここで尋ねられるかもしれませんが、この問題を解決するソルバーが見つかりません。

私の検索スキルをお許しください。よろしくお願いします。


更新が遅くなり申し訳ありません。

この問題から私が学ぶように。

STMT は、名前が異なっていても、新しいものを開く前に閉じる必要があります。

これを解決して最初の結果を配列に保存し、閉じました。

次に、アレイで新しいものを開きます。

最初に配列を作るのは冗長ループになると思います。

私がこの問題を学んだように、パラメータを変更する同じクエリが必要な場合、Prepared MySqli は非常に優れています。O/W、単純な MySqli を使用するだけです。

教えてください、私は間違った方法を理解しました。

ありがとう。

4

1 に答える 1

3

単一のクエリはどうですか?

SELECT c.position FROM user u LEFT JOIN company c ON u.id = c.id

そして、ここにサンプルがあります:

$db = new mysqli($host,$user,$pass,$dbselect);
if($db->connect_error)
        die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());

$result = $db->query("SELECT c.position FROM user u LEFT JOIN company c ON u.id = c.id");
if (!$result)
        die "Error: " . $db->error;

while ($row = $result->fetch_object())
{
    echo $row->position;
}
$result->close();
$db->close();

ID を指摘できるようにする必要がある場合は、これを置き換えます。

$result = $db->query("SELECT c.position FROM user u LEFT JOIN company c ON u.id = c.id");
if (!$result)
        die "Error: " . $db->error;

while ($row = $result->fetch_object())
{
    echo $row->position;
}

これとともに:

$stmt = $db->prepare("SELECT c.position FROM user u LEFT JOIN company c ON u.id = c.id WHERE u.id = ?");
$stmt->bind_param('i',$_POST['id']);

if (!$stmt->execute())
       die('Insert Error ' . $db->error);

$result = $stmt->get_result();
while ($row = $result->fetch_assoc())
{
    echo $row['position'] ;
}

クエリの疑問符とbind_param,sは文字列をi意味し、整数を意味することに注意してください。詳細については、こちらを参照してください

つまりi、整数エントリが 1 つになります。

于 2013-06-17T02:38:48.247 に答える