comparison msitegen.inc.php @ 487:289692a0169c

More helper functions.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 07 Dec 2013 15:17:43 +0200
parents e0fa6bb432d7
children 7d1f08ec1d45
comparison
equal deleted inserted replaced
486:e0fa6bb432d7 487:289692a0169c
458 $db = stConnectSQLDBSpec(stGetSetting("sqlDB")); 458 $db = stConnectSQLDBSpec(stGetSetting("sqlDB"));
459 return ($db !== false); 459 return ($db !== false);
460 } 460 }
461 461
462 462
463 function stGetSQLParam($type, $value) 463 function stDBPrepareSQLUpdate($dbh, $table, $cond, $pairs)
464 { 464 {
465 global $db; 465 $sql = array();
466 switch ($type) 466 foreach ($pairs as $name => $attr)
467 { 467 {
468 case "d": 468 $sql[] = $name."=".stDBGetSQLParam($dbh, $attr, $name);
469 return intval($value); 469 }
470 470 return
471 case "s": 471 "UPDATE ".$table." SET ".implode(",", $sql).
472 return $db->quote($value); 472 ($cond != "" ? " ".$cond : "");
473 473 }
474 case "b": 474
475 return intval($value) ? 1 : 0; 475
476 476 function stDBPrepareSQL($dbh)
477 case "D":
478 return intval(stGetRequestItem($value));
479
480 case "S":
481 return $db->quote(stGetRequestItem($value));
482
483 case "Q":
484 return $db->quote(stGetRequestItem($value));
485
486 case "B":
487 return intval(stGetRequestItem($value)) ? 1 : 0;
488 }
489 }
490
491
492 function stPrepareSQL()
493 { 477 {
494 $argc = func_num_args(); 478 $argc = func_num_args();
495 $argv = func_get_args(); 479 $argv = func_get_args();
496 if ($argc < 1) 480
497 { 481 $fmt = $argv[1];
498 error_log("Invalid stPrepareSQL() call, no arguments!");
499 return FALSE;
500 }
501
502 $fmt = $argv[0];
503 $len = strlen($fmt); 482 $len = strlen($fmt);
504 $sql = ""; 483 $sql = "";
505 $argn = 1; 484 $argn = 2;
506 $pos = 0; 485 for ($pos = 0; $pos < $len; $pos++)
507 while ($pos < $len)
508 { 486 {
509 if ($fmt[$pos] == "%") 487 if ($fmt[$pos] == "%")
510 { 488 {
511 if ($argn < $argc) 489 if ($argn < $argc)
512 $sql .= stGetSQLParam($fmt[++$pos], $argv[$argn++]); 490 $sql .= stGetSQLParam($dbh, $fmt[++$pos], $argv[$argn++]);
513 else 491 else
514 { 492 {
515 error_log("Invalid SQL statement format string '".$fmt. 493 error_log("Invalid SQL statement format string '".$fmt.
516 "', not enough parameters specified (".$argn." of ".$argc.")"); 494 "', not enough parameters specified (".$argn." of ".$argc.")");
517 return FALSE; 495 return FALSE;
518 } 496 }
519 } 497 }
520 else 498 else
521 $sql .= $fmt[$pos]; 499 $sql .= $fmt[$pos];
522 $pos++;
523 } 500 }
524 501
525 return $sql; 502 return $sql;
526 } 503 }
527 504
528 505
529 function stPrepareSQLUpdate($table, $cond, $pairs) 506 function stPrepareSQL()
530 { 507 {
531 $sql = array(); 508 global $db;
532 foreach ($pairs as $name => $attr) 509 $argc = func_num_args();
533 { 510 $argv = func_get_args();
534 $sql[] = $name."=".stGetSQLParam($attr, $name); 511
535 } 512 $fmt = $argv[0];
536 return 513 $len = strlen($fmt);
537 "UPDATE ".$table." SET ".implode(",", $sql). 514 $sql = "";
538 ($cond != "" ? " ".$cond : ""); 515 $argn = 1;
539 } 516 for ($pos = 0; $pos < $len; $pos++)
540 517 {
541 518 if ($fmt[$pos] == "%")
542 function stExecSQL($sql) 519 {
543 { 520 if ($argn < $argc)
544 global $db; 521 $sql .= stGetSQLParam($db, $fmt[++$pos], $argv[$argn++]);
545 if (($res = $db->query($sql)) !== FALSE) 522 else
523 {
524 error_log("Invalid SQL statement format string '".$fmt.
525 "', not enough parameters specified (".$argn." of ".$argc.")");
526 return FALSE;
527 }
528 }
529 else
530 $sql .= $fmt[$pos];
531 }
532
533 return $sql;
534 }
535
536
537 function stDBExecSQL($dbh, $sql)
538 {
539 if (($res = $dbh->query($sql)) !== FALSE)
546 return $res; 540 return $res;
547 else 541 else
548 { 542 {
549 stLogSQLError($sql); 543 stLogSQLError($sql);
550 stError("Oh noes! SQL error #23!"); 544 stError("Oh noes! SQL error #23!");
551 return FALSE; 545 return FALSE;
552 } 546 }
553 } 547 }
554 548
555 549
556 function stFetchSQL($sql) 550 function stDBFetchSQL($dbh, $sql)
557 { 551 {
558 global $db; 552 if (($res = $dbh->query($sql)) !== FALSE)
559 if (($res = $db->query($sql)) !== FALSE)
560 {
561 return $res->fetch(); 553 return $res->fetch();
562 }
563 else 554 else
564 { 555 {
565 stLogSQLError($sql); 556 stLogSQLError($sql);
566 stError("Oh noes! SQL error #31!"); 557 stError("Oh noes! SQL error #31!");
567 return FALSE; 558 return FALSE;
568 } 559 }
569 } 560 }
570 561
571 562
572 function stFetchSQLColumn($sql, $column = 0) 563 function stDBFetchSQLColumn($dbh, $sql, $column = 0)
573 { 564 {
574 global $db; 565 if (($res = $dbh->query($sql)) !== FALSE)
575 if (($res = $db->query($sql)) !== FALSE)
576 {
577 return $res->fetchColumn($column); 566 return $res->fetchColumn($column);
578 }
579 else 567 else
580 { 568 {
581 stLogSQLError($sql); 569 stLogSQLError($sql);
582 stError("Oh noes! SQL error #81!"); 570 stError("Oh noes! SQL error #81!");
583 return FALSE; 571 return FALSE;
584 } 572 }
585 } 573 }
586 574
587 575
588 { 576 function stPrepareSQLUpdate($table, $cond, $pairs)
577 {
578 global $db;
579 return stDBPrepareSQLUpdate($db, $table, $cond, $pairs);
580 }
581
582
583 function stExecSQL($dbh, $sql)
584 {
585 global $db;
586 return stDBExecSQL($db, $sql);
587 }
588
589
590 function stFetchSQL($dbh, $sql)
591 {
592 global $db;
593 return stDBFetchSQL($db, $sql);
594 }
595
596
597 function stFetchSQLColumn($sql, $column = 0)
598 {
599 global $db;
600 return stDBFetchSQLColumn($db, $sql, $column);
589 } 601 }
590 602
591 603
592 function stStrChop($str, $len) 604 function stStrChop($str, $len)
593 { 605 {