Thursday, July 29th 2010, 1:29pm UTC+2

You are not logged in.

  • Login
  • Register

undefined

Super Moderator

Posts: 4,248

Location: Germany

1

Tuesday, March 4th 2008, 2:09pm

[mysqli] und Transactions in PHP 5

Ich Stand heute vor dem Problem das ich mit der Standard mysql Extension keine Transaktion durchführen konnte. Mit der neuen mysqli Extension ist dies nun möglich ;-)
Sinn der Abrage ist es das wenn z.B. die Sprache "de" nicht gefunden wird ein Fallback auf "en" gemacht werden soll. Das ganze schreibe ich in einen XML Dom.

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/**
* Create Main_Index Document
* @return \b XMLDocument
*/
function hjcms_main_index()
{
   global $SQLRES$LOCALES;

   $dom = new DomBuilder();
   if( ! is_object$SQLRES ) )
      return $dom;

$QueryDB = <<<EOT
START TRANSACTION;

SELECT SQL_BUFFER_RESULT @lng:=IF( STRCMP(`main_lang`,'$LOCALES'),'en','$LOCALES')
FROM `hjcms_main_data` WHERE  ( `main_activ` LIKE 1 ) ORDER BY `main_id` ASC;

SELECT SQL_SMALL_RESULT `settings_id`, `settings_param`, `settings_value`
FROM `hjcms_settings` WHERE ( `settings_value` LIKE 0 ) ORDER BY `settings_id`;

SELECT SQL_SMALL_RESULT * FROM `hjcms_meta_definition`
WHERE (`meta_tag` IS NOT NULL) ORDER BY `meta_reference_id` ASC LIMIT 127;

SELECT SQL_SMALL_RESULT `main_id`, `main_type`, `main_title`, `main_body`,
`main_modified`, `main_posted` FROM `hjcms_main_data`
WHERE ( `main_type` RLIKE "news|about" AND `main_lang` LIKE @lng AND `main_activ` LIKE 1 )
ORDER BY `main_id` ASC;

SELECT SQL_SMALL_RESULT `board_id`, `board_public`, `board_sort`, `board_name`,
`board_description`, COUNT(`panel_id`) AS `board_panel_subcount`
FROM `hjcms_board` USE INDEX(`board_permissions_id`)
LEFT JOIN `hjcms_panel` ON (`panel_board_id`=`board_id` AND `panel_activated`='1')
WHERE (`board_disabled`='0' AND `board_permissions_id`!=0 AND `panel_activated`='1' )
GROUP BY `board_id` ORDER BY `board_sort` ASC LIMIT 999;

COMMIT;
EOT;

   $KEY_SET = array(
      "settings_id" => "hjcms_settings",
      "meta_id" => "meta",
      "main_id" => "main",
      "board_id" => "boardnav"
   );

   if( mysqli_multi_query$SQLRES$QueryDB ) )
   {
      do {
         if( $result mysqli_store_result$SQLRES ) )
         {
            $fields mysqli_fetch_field$result );
            if( ! array_key_exists( (string)$fields->name$KEY_SET ) )
               continue;

            while( $rows mysqli_fetch_assoc$result ) )
            {
               $dom->addSibling$KEY_SET[$fields->name], $fields->name );
               foreach( $rows AS $k => $v )
               {
                  $dom->childNode$k$v );
               }
            }
            mysqli_free_result$result );
         }
         mysqli_more_results$SQLRES );
      } while ( mysqli_next_result$SQLRES ) );
   }

   return $dom->getDom();
}
Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
PHP Katepart - Speichenrechner - .htpasswd - RPM XDG Tool - Kcmnvview - QTidy
  • Go to the top of the page

[neo_ryke]

Professional

Posts: 906

Location: Hohenmölsen

2

Tuesday, December 30th 2008, 9:54pm

Was mich hier freut, ist mal zu sehen, wie man mehrere Abfragen in mysqli schicken kann.
Super Sache, sowas hat man doch immer mal gesucht.
:-)
Gruß
  • Go to the top of the page