Advertisement
rfv123

questions/29460447 - test view creation and select

Apr 6th, 2015
337
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.21 KB | None | 0 0
  1. <?php // http://stackoverflow.com/questions/29460447/pdoexception-syntax-error-or-access-violation-1142-when-creating-view-referenci?noredirect=1#comment47088865_29460447
  2.  
  3. // PHP 5.3.29 -
  4.  
  5. // db connection to TestMysql and Rags1
  6. $dsn = 'mysql:host=localhost;dbname=testmysql';
  7. $username = 'test';
  8. $password = 'test';
  9. $options = array(
  10.     PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
  11. );
  12. $pdoDB = new PDO($dsn, $username, $password, $options);
  13. $pdoDB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  14.  
  15.  
  16. $sql_T1 = "
  17.    CREATE TABLE SOQ_T (
  18.        id int(11) NOT NULL AUTO_INCREMENT,
  19.        foo varchar(45) DEFAULT NULL,
  20.        PRIMARY KEY (id)
  21.    );
  22. ";
  23.  
  24. $sql_V1 = "
  25.    CREATE VIEW SOQ_V1 AS (
  26.        SELECT SOQ_T.id   AS V1_T1_Id,
  27.               SOQ_T.foo  AS V1_T1_Foo
  28.        FROM SOQ_T
  29.    );
  30. ";
  31.  
  32. $sql_V2 = "
  33.    CREATE VIEW SOQ_V2 AS (
  34.        SELECT SOQ_T.Id AS V2_T1_Id,
  35.               SOQ_V1.V1_T1_Foo AS V2_V1_Foo
  36.        FROM SOQ_T
  37.            INNER JOIN SOQ_V1 ON SOQ_V1.V1_T1_Id = SOQ_T.id
  38.    );
  39. ";
  40.  
  41. // CREATE TABLE SOQ_T (
  42. try {
  43.      $pdoDB->exec($sql_T1);
  44.      echo("Created $sql_T1 Table.<br />");
  45.  
  46. } catch(PDOException $e) {
  47.     echo $e->getMessage();//Remove or change message in production code
  48.     echo '<br />';
  49. }
  50.  
  51. // CREATE VIEW SOQ_V1 AS (
  52. try {
  53.      $pdoDB->exec($sql_V1);
  54.      echo("Created $sql_V1 View.<br />");
  55.  
  56. } catch(PDOException $e) {
  57.     echo $e->getMessage();//Remove or change message in production code
  58.     echo '<br />';
  59. }
  60.  
  61. // CREATE VIEW SOQ_V2 AS (
  62. try {
  63.      $pdoDB->exec($sql_V2);
  64.      echo("Created $sql_V2 View.<br />");
  65.  
  66. } catch(PDOException $e) {
  67.     echo $e->getMessage();//Remove or change message in production code
  68.     echo '<br />';
  69. }
  70.  
  71. // insert some data
  72. $sql = "insert into  SOQ_T (foo) values (:foo)";
  73. $stmt = $pdoDB->prepare($sql);
  74.  
  75. $stmt->bindValue(':foo', "row 1", PDO::PARAM_STR);
  76. $allOk = $stmt->execute();
  77.  
  78. $lastId = $pdoDB->lastInsertId();
  79.  
  80. // select the data,,,
  81. $sql = "select id, foo from SOQ_T where id = ?";
  82. $stmt = $pdoDB->prepare($sql);
  83.  
  84. // ----------------
  85. $stmt->bindValue(1, $lastId, PDO::PARAM_STR);
  86. $allOk = $stmt->execute();
  87. echo '<br />', $sql, '<br />';
  88. while ($row = $stmt->fetch()) {
  89.     var_dump($row);
  90. }
  91. echo '<br />';
  92. $stmt->closeCursor();
  93.  
  94. // ----------------
  95. $sql = "select V1_T1_Id, V1_T1_Foo from SOQ_V1 where V1_T1_Id = ?";
  96. $stmt = $pdoDB->prepare($sql);
  97. $stmt->bindValue(1, $lastId, PDO::PARAM_STR);
  98. $allOk = $stmt->execute();
  99. echo '<br />', $sql, '<br />';
  100. while ($row = $stmt->fetch()) {
  101.     var_dump($row);
  102. }
  103. echo '<br />';
  104. $stmt->closeCursor();
  105.  
  106. // ----------------
  107. $sql = "select V2_T1_Id, V2_V1_Foo from SOQ_V2 where V2_T1_Id = ?";
  108. $stmt = $pdoDB->prepare($sql);
  109. $stmt->bindValue(1, $lastId, PDO::PARAM_STR);
  110. $allOk = $stmt->execute();
  111. echo '<br />', $sql, '<br />';
  112. while ($row = $stmt->fetch()) {
  113.     var_dump($row);
  114. }
  115. echo '<br />';
  116. $stmt->closeCursor();
  117.  
  118. // cleanup
  119. $sql = "drop view SOQ_V2;";
  120. $stmt = $pdoDB->prepare($sql);
  121. $stmt->execute();
  122. echo '<br />';
  123.  
  124. $sql = "drop view SOQ_V1;";
  125. $stmt = $pdoDB->prepare($sql);
  126. $stmt->execute();
  127. echo '<br />';
  128.  
  129. $sql = "drop table SOQ_T;";
  130. $stmt = $pdoDB->prepare($sql);
  131. $stmt->execute();
  132. echo '<br />';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement