コード例 #1
0
ファイル: injection.mysql.php プロジェクト: wukka/db
//var_dump( $conn1 );
Transaction::reset();
T::ok(Transaction::start(), 'started a transaction at the global level');
$conn1 = $newconn();
$conn2 = $newconn();
T::ok($conn1->start(), 'started a transaction on conn1');
T::ok($conn2->start(), 'started a transaction on conn2');
$rs = $conn1->execute("insert into {$table} values (3)");
T::ok($rs, 'inserted a row into test table from conn1');
//if( ! $rs ) T::debug( $conn1 );
$rs = $conn2->execute("insert into {$table} values(4)");
T::ok($rs, 'inserted a row into test table from conn2');
//if( ! $rs ) T::debug( $conn2 );
T::ok($conn1->commit(), 'committed inserted row on conn1');
T::ok($conn2->commit(), 'committed inserted row on conn2');
T::ok(Transaction::rollback(), 'rolled back the transaction at the global level');
T::ok($rs = $dbmain->execute("select id from {$table}"), 'selected all rows from the table');
$ct = $rs->affected();
T::is($ct, 2, '2 rows in the table, new rows rolled back');
$rs = $conn1->execute("select id from {$table}");
T::is($rs, FALSE, 'after rolling back, new queries fail on rolled back db object');
$dbmain->execute("drop table {$table}");
$db = $newconn();
$raw = file_get_contents(__DIR__ . '/sample/i_can_eat_glass.txt');
$lines = explode("\n", $raw);
$lines = array_slice($lines, 0, 10) + array_slice($lines, 100, 10) + array_slice($lines, 200, 10) + array_slice($lines, 200, 10);
$raw = implode("\n", $lines);
$sql = "CREATE TEMPORARY TABLE t1utf8 (`i` INT UNSIGNED NOT NULL PRIMARY KEY, `line` VARCHAR(5000) ) ENGINE=InnoDB DEFAULT CHARACTER SET utf8";
$db->execute($sql);
foreach ($lines as $i => $line) {
    //$lines[ $i ] = $line = mb_convert_encoding($line, 'UTF-8', 'auto');
コード例 #2
0
ファイル: DB.php プロジェクト: wukka/db
 /**
  * run a query and return a Wukka\DB\Result object on success.
  * returns FALSE on failure.
  * pass in extra args to do automagic SQL preparation.
  */
 public function execute($query)
 {
     if ($this->lock) {
         return FALSE;
     }
     $args = func_get_args();
     array_shift($args);
     $sql = $this->prep_args($query, $args);
     $f = $this->_[__FUNCTION__];
     $res = $f($sql);
     if ($res) {
         return $res;
     }
     if ($this->txn) {
         Transaction::block();
         $this->lock = TRUE;
     }
     return $res;
 }