0

データベースから列を選択し、データベースにデータを挿入できるように、mysqli と php を使用しています。mysqli を調査しているときに、行数が 0 に等しいかどうかを確認する前に、while($stmt->fetch()) {

ここで、SELECT と他の INSERT 用のコード ブロックが必要なため、while fetch ループがコード全体をラップすることを想定しているのか、それともコードの SELECT ブロックとコードの INSERT ブロックをラップすることを想定しているのかを知りたいと考えています。別々に?

アップデート:

    $query = "SELECT TeacherAlias FROM Teacher WHERE TeacherAlias = ?";
       // prepare query
       $stmt=$mysqli->prepare($query);
       // You only need to call bind_param once
       $stmt->bind_param("s",$getid);
       // execute query
       $stmt->execute();
       // get result and assign variables (prefix with db)
       $stmt->bind_result($dbTeacherAlias);
       //get number of rows
       $stmt->store_result();
       $numrows = $stmt->num_rows();
       $results = $stmt->fetch_all();


    foreach ($results as $row) {
       if ($numrows == 0){    

           // don't use $mysqli->prepare here
       $query = "SELECT TeacherUsername FROM Teacher WHERE TeacherUsername = ?";
       // prepare query
       $stmt=$mysqli->prepare($query);
       // You only need to call bind_param once
       $stmt->bind_param("s",$getuser);
       // execute query
       $stmt->execute(); 
       // get result and assign variables (prefix with db)
       $stmt->bind_result($dbTeacherUsername);
       //get number of rows
       $stmt->store_result();
       $numrows = $stmt->num_rows();
       $results = $stmt->fetch_all();
    }

foreach ($results as $row) {  
       if ($numrows == 0){
                                               // don't use $mysqli->prepare here
       $query = "SELECT TeacherEmail FROM Teacher WHERE TeacherEmail = ?";
       // prepare query
       $stmt=$mysqli->prepare($query);
       // You only need to call bind_param once
       $stmt->bind_param("s",$getemail);
       // execute query
       $stmt->execute(); 
       // get result and assign variables (prefix with db)
       $stmt->bind_result($dbTeacherEmail);
       //get number of rows
       $stmt->store_result();
       $numrows = $stmt->num_rows();
       $results = $stmt->fetch_all();
}

}
}
}
4

2 に答える 2

0

を試してくださいmysqli::fetch_all()。これは連想配列を返します。

$results = $stmt->fetch_all();

foreach ($results as $row) {
    // do something...
}
于 2012-08-24T19:15:52.320 に答える
-2
// if no results found it will return either empty array or null (not sure, check it)
$results = $stmt->fetch_all();

// if $results is an empty array it will not enter the loop
foreach($results as $row) {
    if ($numrows == 0){   // this is never reached if results no results were found
于 2012-08-25T00:55:02.037 に答える