DB_Sql Examples

Use a subclass to provide the appropriate parameters for a database connect. You may overwrite halt() to customize the error message, although a sensible default is provided.

 class DB_Article extends DB_Sql {
  var $classname = "DB_Article";

  var $Host     = "sales.doma.in";
  var $Database = "shop_project";
  var $User     = "webuser";
  var $Password = "";

  function haltmsg($msg) {
    printf("</td></table><b>Database error:</b> %s<br>\n", $msg);
    printf("<b>MySQL Error</b>: %s (%s)<br>\n",
      $this->Errno, $this->Error);
    printf("Please contact shopmaster@doma.in and report the ");
    printf("exact error message.<br>\n");
  }
 }

Use an instance of the subclass to manage your queries:

 $q = new DB_Article;

 $query = sprintf("select * from articles where article like '%%%s%%'",
              $searchword);
 $q->query($query);

 while($q->next_record()) {
  printf("<tr><td>%s</td><td>%s</td></tr>\n",
    $q->f("art_id"),
    $q->f("article"));
 }

Using nextid()

The nextid() function can be used to obtain a sequence number which can be used as a primary key. The function manages an arbitrary number of named sequences, you have to provide the name of a sequence upon call.

 $db = new DB_Article;

 $artnr = $db->nextid("article_sequence");
 $query = sprintf("insert into articles ( artnr, ...) 
   values ('%s', ...)", $artnr, ...);
 $db->query($query);

 reset($articles);
 while(list($itemnr, $itemdesc) = each($articles)) {
  $itemnr = $db->nextid("item_sequence");
  $query = sprintf("insert into items (artnr, itemnr, ...) 
    values ('%s', '%s', ...)", $artnr, $itemnr, ...);
  $db->query($query);
 }