本文整理汇总了PHP中MySQLPDOTest::getTableEngine方法的典型用法代码示例。如果您正苦于以下问题:PHP MySQLPDOTest::getTableEngine方法的具体用法?PHP MySQLPDOTest::getTableEngine怎么用?PHP MySQLPDOTest::getTableEngine使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MySQLPDOTest
的用法示例。
在下文中一共展示了MySQLPDOTest::getTableEngine方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: test_type
function test_type(&$db, $offset, $sql_type, $value, $ret_value = NULL, $pattern = NULL, $alternative_type = NULL)
{
$db->exec('DROP TABLE IF EXISTS test');
$sql = sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, MySQLPDOTest::getTableEngine());
@$db->exec($sql);
if ($db->errorCode() != 0) {
// not all MySQL Server versions and/or engines might support the type
return true;
}
$stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)');
$stmt->bindValue(1, $offset);
$stmt->bindValue(2, $value);
if (!$stmt->execute()) {
printf("[%03d + 1] INSERT failed, %s\n", $offset, var_export($stmt->errorInfo(), true));
return false;
}
$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
$stmt = $db->query('SELECT id, label FROM test');
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
if (!isset($row['id']) || !isset($row['label'])) {
printf("[%03d + 2] Fetched result seems wrong, dumping result: %s\n", $offset, var_export($row, true));
return false;
}
if ($row['id'] != $offset) {
printf("[%03d + 3] Expecting %s got %s\n", $offset, $row['id']);
return false;
}
if (!is_null($pattern)) {
if (!preg_match($pattern, $row['label'])) {
printf("[%03d + 5] Value seems wrong, accepting pattern %s got %s, check manually\n", $offset, $pattern, var_export($row['label'], true));
return false;
}
} else {
$exp = $value;
if (!is_null($ret_value)) {
// we expect a different return value than our input value
// typically the difference is only the type
$exp = $ret_value;
}
if ($row['label'] !== $exp && !is_null($alternative_type) && gettype($row['label']) != $alternative_type) {
printf("[%03d + 4] %s - input = %s/%s, output = %s/%s (alternative type: %s)\n", $offset, $sql_type, var_export($exp, true), gettype($exp), var_export($row['label'], true), gettype($row['label']), $alternative_type);
return false;
}
}
$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
$stmt = $db->query('SELECT id, label FROM test');
$row_string = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
if (is_null($pattern) && $row['label'] != $row_string['label']) {
printf("%s - STRINGIGY = %s, NATIVE = %s\n", $sql_type, var_export($row_string['label'], true), var_export($row['label'], true));
return false;
} else {
if (!is_null($pattern) && !preg_match($pattern, $row_string['label'])) {
printf("%s - STRINGIGY = %s, NATIVE = %s, pattern '%s'\n", $sql_type, var_export($row_string['label'], true), var_export($row['label'], true), $pattern);
return false;
}
}
return true;
}
示例2: pdo_mysql_stmt_bindparam_types_do
function pdo_mysql_stmt_bindparam_types_do($db, $offset, $native, $sql_type, $value)
{
if ($native) {
$db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
} else {
$db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 1);
}
$db->exec('DROP TABLE IF EXISTS test');
$sql = sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, MySQLPDOTest::getTableEngine());
if (!($stmt = @$db->prepare($sql)) || !@$stmt->execute()) {
// Server might not support column type - skip it
return true;
}
$stmt = $db->prepare('INSERT INTO test(id, label) VALUES (1, ?)');
if (!$stmt->bindParam(1, $value)) {
printf("[%03d/%s + 1] %s\n", $offset, $native ? 'native' : 'emulated', var_export($stmt->errorInfo(), true));
return false;
}
if (!$stmt->execute()) {
printf("[%03d/%s + 2] %s\n", $offset, $native ? 'native' : 'emulated', var_export($stmt->errorInfo(), true));
return false;
}
$stmt = $db->query('SELECT id, label FROM test');
$id = $label = null;
if (!$stmt->bindColumn(1, $id)) {
printf("[%03d/%s + 3] %s\n", $offset, $native ? 'native' : 'emulated', var_export($stmt->errorInfo(), true));
return false;
}
if (!$stmt->bindColumn(2, $label)) {
printf("[%03d/%s + 4] %s\n", $offset, $native ? 'native' : 'emulated', var_export($stmt->errorInfo(), true));
return false;
}
if (!$stmt->fetch(PDO::FETCH_BOUND)) {
printf("[%03d/%s + 5] %s\n", $offset, $native ? 'native' : 'emulated', var_export($stmt->errorInfo(), true));
return false;
}
$stmt->closeCursor();
if ($label != $value) {
printf("[%03d/%s + 6] Got %s expecting %s - plase check manually\n", $offset, $native ? 'native' : 'emulated', var_export($label, true), var_export($value, true));
// fall through
}
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if (empty($row)) {
printf("[%03d/%s + 7] %s\n", $offset, $native ? 'native' : 'emulated', var_export($stmt->errorInfo(), true));
return false;
}
if ($row['label'] != $value) {
printf("[%03d/%s + 8] Got %s expecting %s - plase check manually\n", $offset, $native ? 'native' : 'emulated', var_export($row['label'], true), var_export($value, true));
return false;
}
if ($row['label'] != $label) {
printf("[%03d/%s + 9] Got %s from FETCH_ASSOC and %s from FETCH_BOUND- plase check manually\n", $offset, $native ? 'native' : 'emulated', var_export($row['label'], true), var_export($value, true));
return false;
}
$db->exec('DROP TABLE IF EXISTS test');
return true;
}
示例3: test_meta
function test_meta(&$db, $offset, $sql_type, $value, $native_type, $pdo_type)
{
$db->exec('DROP TABLE IF EXISTS test');
$sql = sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, MySQLPDOTest::getTableEngine());
if (!($stmt = @$db->prepare($sql)) || !@$stmt->execute()) {
// Some engines and/or MySQL server versions might not support the data type
return true;
}
if (!$db->exec(sprintf("INSERT INTO test(id, label) VALUES (1, '%s')", $value))) {
printf("[%03d] + 1] Insert failed, %d - %s\n", $offset, $db->errorCode(), var_export($db->errorInfo(), true));
return false;
}
$stmt = $db->prepare('SELECT id, label FROM test');
$stmt->execute();
$meta = $stmt->getColumnMeta(1);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if (empty($meta)) {
printf("[%03d + 2] getColumnMeta() failed, %d - %s\n", $offset, $stmt->errorCode(), var_export($stmt->errorInfo(), true));
return false;
}
$elements = array('flags', 'table', 'name', 'len', 'precision', 'pdo_type');
foreach ($elements as $k => $element) {
if (!isset($meta[$element])) {
printf("[%03d + 3] Element %s missing, %s\n", $offset, $element, var_export($meta, true));
return false;
}
}
if ($meta['table'] != 'test' || $meta['name'] != 'label') {
printf("[%03d + 4] Table or field name is wrong, %s\n", $offset, var_export($meta, true));
return false;
}
if (!is_null($native_type)) {
if (!isset($meta['native_type'])) {
printf("[%03d + 5] Element native_type missing, %s\n", $offset, var_export($meta, true));
return false;
}
if (!is_array($native_type)) {
$native_type = array($native_type);
}
$found = false;
foreach ($native_type as $k => $type) {
if ($meta['native_type'] == $type) {
$found = true;
break;
}
}
if (!$found) {
printf("[%03d + 6] Expecting native type %s, %s\n", $offset, var_export($native_type, true), var_export($meta, true));
return false;
}
}
if (!is_null($pdo_type) && $meta['pdo_type'] != $pdo_type) {
printf("[%03d + 6] Expecting PDO type %s got %s (%s)\n", $offset, $pdo_type, var_export($meta, true), var_export($meta['native_type']));
return false;
}
return true;
}
示例4: test_type
function test_type(&$db, $offset, $sql_type, $value, $ret_value = NULL, $pattern = NULL)
{
$db->exec('DROP TABLE IF EXISTS test');
$sql = sprintf('CREATE TABLE test(id INT, label %s) ENGINE=%s', $sql_type, MySQLPDOTest::getTableEngine());
@$db->exec($sql);
if ($db->errorCode() != 0) {
// not all MySQL Server versions and/or engines might support the type
return true;
}
$stmt = $db->prepare('INSERT INTO test(id, label) VALUES (?, ?)');
$stmt->bindValue(1, $offset);
$stmt->bindValue(2, $value);
if (!$stmt->execute()) {
printf("[%03d + 1] INSERT failed, %s\n", $offset, var_export($stmt->errorInfo(), true));
return false;
}
$stmt = $db->query('SELECT id, label FROM test');
$row = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($row);
var_dump($value);
return true;
}
示例5: serialize
public function serialize()
{
printf("%s()\n", __METHOD__);
return 'Data from serialize';
}
public function unserialize($data)
{
printf("%s(%s)\n", __METHOD__, var_export($data, true));
}
}
$db->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, 0);
if (0 != $db->getAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY)) {
printf("[002] Unable to turn off emulated prepared statements\n");
}
$db->exec('DROP TABLE IF EXISTS test');
$db->exec(sprintf('CREATE TABLE test(id INT, myobj BLOB) ENGINE=%s', MySQLPDOTest::getTableEngine()));
printf("Creating an object, serializing it and writing it to DB...\n");
$id = 1;
$obj = myclass::singleton('Creating object');
$myobj = serialize($obj);
$stmt = $db->prepare('INSERT INTO test(id, myobj) VALUES (?, ?)');
$stmt->bindValue(1, $id);
$stmt->bindValue(2, $myobj);
$stmt->execute();
printf("\nUnserializing the previously serialized object...\n");
var_dump(unserialize($myobj));
printf("\nUsing PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE to fetch the object from DB and unserialize it...\n");
$stmt = $db->prepare('SELECT myobj FROM test');
$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_SERIALIZE, 'myclass', array('PDO shall not call __construct()'));
$stmt->execute();
var_dump($stmt->fetch());