0

私はファイルを操作しており、複数の選択ステートメントを次々に実行していくつかの値を挿入しようとしています。これまでのところ、挿入と選択は一緒に機能していますが、最後の SELECT を機能させようとすると、値が得られません。ワークベンチで SQL クエリを確認すると、すべて正常に動作します。コードは次のとおりです。

$id = "SELECT idaccount FROM `animator`.`account` WHERE email = '$Email'";
$result = mysqli_query($dbc, $id) or die("Error: ".mysqli_error($dbc));
while($row = mysqli_fetch_array($result))
{
    echo $row[0];
    $insert_into_user = "INSERT INTO `animator`.`user` (idaccount) VALUES ('$row[0]')";
}
    $select_userid = "SELECT iduser FROM `animator`.`user` WHERE iduser = '$row[0]'";

    $results = mysqli_query($dbc, $select_userid) or die("Error: ".mysqli_error($dbc));
while($rows = mysqli_fetch_array($results))
{    
    echo $rows[0];
}

$mysqli->multi_query を使用したくないのは、以前に遭遇した問題のためです。助言がありますか?はい、命名規則が近い命名であることは知っています...それらはまもなく変更されます。

4

2 に答える 2

2

あなたのコードは意味がありません。クエリを繰り返しビルド/再ビルドした$insert_int-User後、実際にクエリを実行することはありません。$select_userid クエリは、最初のクエリから最後に取得された $row[0] 値のみを使用します。その最後の「行」はブール値の FALSE になり、これ以上データが利用できないことを示すため、$row[0]実際にはそのブール値の FALSE を配列として逆参照しようとします。

実質的に 2 つの選択クエリしか実行していない (または少なくとも実行しようとしている) ため、1 つの 2 つの値を結合したクエリとして書き直してはどうでしょうか?

SELECT iduser, idaccount
FROM account
LEFT JOIN user ON user.iduser=account.idaccount
WHERE email='$Email';
于 2013-09-20T19:11:12.313 に答える
0

コードで何をしようとしているのか正確にはわかりませんが、これを見てください...

// create select statement to get all accounts where email=$Email from animator.account
$id_query = "SELECT idaccount FROM animator.account WHERE email = '$Email'";
echo $id_query."\n"; 

// run select statement for email=$mail 
$select_results = mysqli_query($dbc, $id_query) or die("Error: ".mysqli_error($dbc));


// if we got some rows back from the database... 
if ($select_results!==false)
{ 
   $row_count = 0; 

   // loop through all results 
   while($row = mysqli_fetch_array($result))
   {
       $idaccount = $row[0]; 

       echo "\n\n-- Row #$row_count --------------------------------------------\n";
       echo $idaccount."\n";

       // create insert statement for this idaccount
       $insert_into_user = "INSERT INTO animator.user (idaccount) VALUES ('$idaccount')"; 
       echo $insert_into_user."\n";

       // run insert statement for this idaccount
       $insert_results = mysqli_query($dbc, $insert_into_user) or die("Error: ".mysqli_error($dbc)); 

       // if our insert statement worked... 
       if ($insert_results!==false)
       {
          // Returns the auto generated id used in the last query
          $last_inisert_id = mysqli_insert_id($dbc); 
          echo $last_inisert_id."\n"; 
       }
       else 
       { 
         echo "insert statement did not work.\n"; 
       }

       $row_count++; 
   }

}
// we didn't get any rows back from the DB for email=$Email 
else 
{ 
   echo "select query returned no results...? \n"; 
}
于 2013-09-20T21:39:21.607 に答える