3

私のデータベースを明確にするためにデータベースと呼ばれ、私のテーブルはテーブルと呼ばれます(これはテスト用でした)。

  class Database 
{ 
 public $server = "localhost";
 public $database = "database"; 
 public $user = "root"; 
 public $password = ""; 
 public $row;
 public $result;



 //call connection method upon constructing 
 public function __construct(){
  $this->createConnection(); 
 }

 //connection to the database
 public function createConnection() 
    { 
     $this->dbLocalhost = mysql_connect($this->server, $this->user, $this->password)
                or die("could not connect:".mysql_error());

        mysql_select_db($this->database)
        or die("Could not find the database: ".mysql_error());
 } 

 //execute query string 
 public function query($queryString) 
    {

        echo "<table border='1' cellpadding='10'>";
        echo "<tr> <th>ID</th> <th>First Name</th> <th>Last Name</th> <th></th> <th></th></tr>";
        $this->result = mysql_query($queryString)
        or die($queryString."<br/><br/>".mysql_error());

        while($this->row = mysql_fetch_array($this->result)) {

                echo "<tr>";
                echo '<td>' . $this->row['id'] . '</td>';
                echo '<td>' . $this->row['firstname'] . '</td>';
                echo '<td>' . $this->row['lastname'] . '</td>';
                echo '<td><a href="edit.php?id=' . $this->row['id'] . '">Edit</a></td>';
                echo '<td><a href="delete.php?id=' . $this->row['id'] . '">Delete</a></td>';
                echo "</tr>"; 

        } 

        echo "</table>";
    } 

そして、関数を呼び出すphpファイルがあります。

<?php

include('database.php');
$db = new Database();
$sql = "SELECT * 
    FROM table"; 
$db->query($sql);

?>

これは受信エラーです:

SELECT*FROMテーブル

SQL構文にエラーがあります。2行目の「table」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

ありがとう。

4

1 に答える 1

2

tableはMySQLの予約語なので、エスケープする必要があります。あなたは`それの周りにsを置くことによってそれをすることができます。

例えば:

SELECT * FROM `table`

私のリンクでわかるように、多くの頭痛の種を引き起こす可能性のあるいくつかのトリッキーな予約語があります。`テーブル名やフィールド名を書くときは、常に文字を使うべきだという人もいます。

于 2012-11-11T23:54:56.967 に答える