Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 395
  • Last Modified:

How to bind variables using mysqli for unknown number of field

My prepare statement: "select * from tblname";
How do I bind the number of unknown field being retrieved?
It could be 2 or 10.

Help!


I know how to bind if I know that it is going to return 2 fields (see code below).
How do I bind it if I don't know how many fields are being retrieved so that I can bind the result and then fetch all the values???




if ($sql = $mysqli->prepare("SELECT * FROM lindatest")) {
$sql->execute();

/* bind variables to prepared statement */
$sql->bind_result($col1, $col2);

/* fetch values */
while ($sql->fetch()) {
printf($col1." and ".$col2."<br />");
}

/* close statement */
$sql->close();
}
0
bigjdve
Asked:
bigjdve
  • 3
  • 3
2 Solutions
 
darkyin87Commented:
0
 
bigjdveAuthor Commented:
That is helpful.  However, how do I bind the variables if let see there are 10 fields that was returned.
Do I have to have 10 bind variables ($sql->bind_result($col1, $col2...$col10)??
0
 
darkyin87Commented:
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
bigjdveAuthor Commented:
darkyin887 -- again, thank you.  I actually figure this out already.  But thank you.  However, I am now stuck on how to retrieve my data.  I used a while loop to go through my resultset to get my data.  This table only have 2 fields (date, value).  To retrieve the date field, I need to specified that exact field (i.e. $result['date']).  Is there a way to retrieve this field without specifying the field name.

See my code:

if ($sql = $mysqli->prepare("SELECT * FROM lindatest")) {
    $sql->execute();


      $sql->store_result();
      
      $meta = $sql->result_metadata();

      $bindVarsArray = array();
      
      while ($column = $meta->fetch_field()) {
         $bindVarsArray[] = &$results[$column->name];
      }      
      call_user_func_array(array($sql, 'bind_result'), $bindVarsArray);
      
      $sql->fetch();

      while ($sql->fetch())
      {            
            echo "here= ".$results['value']." <br>";
            
      }

      $sql->close();
}
0
 
darkyin87Commented:
I am sorry.. I think that is not possible.
0
 
bigjdveAuthor Commented:
solution was resolved with the call_user_func
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now