MySQLi: bind_param and objects

  • Filter
  • Time
  • Show
Clear All
new posts

  • MySQLi: bind_param and objects


    I want to use MySQLi with prepared statements so I've prepared the query with the DB object:

    $update = $db->prepare("UPDATE bla SET xx=?, yy=? WHERE zz=?");

    Because my application is fully OOP, I have objects with the data I want to use for the query.

    class BlaData {var $x;var $y;var $z}$data = array(Lots of BlaData objects);

    Now I want to execute the update query for every object in the array.

    foreach(...) {$update->...???$update->Execute();}

    How can I now bind the BlaData->x, y and z vars to the query without using local variables in bind_param? All samples of bind_param work so:

    $stmt->bind_param("ii",$var1,$var2);foreach() { $var1 = rand(); $stmt->execute();}

    I tried:

    $fd = new BlaData(); //empty$stmt->bind_param("ii",$fd->x,$fd->y);for($i.. count($data)... $i++) { $fd = $data[$i] $stmt->execute();}

    But it doesn't work, it looks like bind_param uses the (empty) object I've used to first time on every execute() again.

    I think that's because bind_param stores a reference to the variable which doesn't change to a new value if I reassign the $fd object.

    Is there a way to use the object properties without copying everything from the object to a local variable first? Or is it possible to call bind_params(); every time in the loop before ->Execute() or will this affect the performance negatively?
    If bind_params causes a round trip to the MySQL Server, calling it every time before Execute() is not really an option.

    Thanks and best regards,