読みやすさだけでなく、作業中のプロジェクトのカスタマイズのためにも、コードを短くするトリックを実行しようとしています。
データベースに接続するクラスを作成しましたが、列を含むテーブルを作成するために使用する関数に苦労しています。
これまでのところ、クラスは次のようになっています。
class DataBase {
private $link;
private $host, $username, $password, $database;
public function __construct($host, $username, $password, $database){
$this->host = $host;
$this->username = $username;
$this->password = $password;
$this->database = $database;
$this->link = mysql_connect($this->host, $this->username, $this->password)
OR die("There was a problem connecting to the database.");
mysql_select_db($this->database, $this->link)
OR die("There was a problem selecting the database.");
return true;
}
public function query($query) {
$result = mysql_query($query);
if (!$result) die('Invalid query: ' . mysql_error());
return $result;
}
public function __destruct() {
mysql_close($this->link)
OR die("There was a problem disconnecting from the database.");
}
}
ご覧のとおり、クエリの方法はすでに追加されています。その実行方法の例は次のとおりです。
$db = new DataBase('localhost',$user,$pass,$name);
$db->query('SELECT * FROM table WHERE id="0"');
誰かが私に挿入テーブルを追加する関数を追加するためのコードを送ってくれましたか?私はこれを試しました:
public function create_table($t_data) {
$result = $t_data;
if (!$result) die('Invalid query: ' . mysql_error());
return $result;
}
使用法:
$t_data = 'CREATE TABLE log_users(
uid VARCHAR(1024) NOT NULL,
username VARCHAR(33) NOT NULL,
password VARCHAR(18) NOT NULL,
admin VARCHAR(1) DEFAULT 0,
key VARCHAR(18) NOT NULL,
constant VARCHAR(1) DEFAULT 0)';
$db->create_table($t_data);
私は見てお勧めでしょうMySQLi
かPDO
あなたは推奨されない機能使用しているので、mysql
それが今立っているように脆弱です。私はあなたが始めるためにあなたのクラスを更新しました(テストされていません)。これにより、テーブルを作成できないという元の問題も修正されます。
class DataBase {
private $link;
// May not need these, see updated __construct method
private $host, $username, $password, $database;
public function __construct($host, $username, $password, $database){
// Unless you need them elsewhere, no reason to set $this->host, $this->username, etc...you can just access directly like below
$this->link = new mysqli($host, $username, $password, $database);
// Check connection (which also checks selection of database)
if ($this->link->connect_error) {
die("Connection failed: " . $this->link->connect_error);
}
}
// You will need to research and update this to work with mysqli (right now it's ripe for SQL injection)!
public function query($query) {
$result = mysql_query($query);
if (!$result) die('Invalid query: ' . mysql_error());
return $result;
}
// This method will create a table based on the SQL you send it
public function create_table($sql) {
if ($this->link->query($sql) === TRUE) {
return "Table created successfully";
} else {
return "Error creating table: " . $this->link->error;
}
}
// Close connection
public function __destruct() {
$this->link->close();
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加