SQL実習

host=news password=foobar

SQL:

学内からしか使えません

上のソース

<form action="psql.php" method="post">
SQL:<br>
<textarea name="sql" rows="5" cols="60"></textarea><br>
<input type="submit" value="Query">
<input type="reset" value="Clear">
</form>

<?php
  if (!preg_match("/^(192\.244\.75\.|10\.|127\.)/", $REMOTE_ADDR)) {
    echo "<p>学内からしか使えません\n";
  } elseif ($_POST['sql']) {
    $s = htmlspecialchars($_POST['sql'], ENT_QUOTES);
    echo "<p>SQL: $s\n";
    $conn = pg_connect("host=news password=foobar");
    if ($conn == FALSE) {
      echo "<p>データベースに接続できませんでした";
    } else {
      $result = pg_query($conn, $s);
      if ($result == FALSE) {
        echo "<p>SQL エラー";
      } else {
        $rows = pg_num_rows($result);
        $cols = pg_num_fields($result);
        if ($cols > 0) {
          echo "<p><table border=\"1\">\n";
          echo "<tr>";
          for ($j = 0; $j < $cols; $j++) {
            $s = htmlspecialchars(pg_field_name($result, $j));
            echo "<th>$s";
          }
          echo "</tr>\n";
          for ($i = 0; $i < $rows; $i++) {
            echo "<tr>";
            for ($j = 0; $j < $cols; $j++) {
              $s = htmlspecialchars(pg_fetch_result($result, $i, $j));
              echo "<td>$s";
            }
            echo "</tr>\n";
          }
          echo "</table>\n";
        }
        echo "<p>Ok.\n";
        pg_freeresult($result);
      }
      pg_close($conn);
    }
  }
?>

松阪大学 奥村晴彦 okumura@matsusaka-u.ac.jp

Last modified: 2004-11-08 08:56:21