2

PHP が定期的に SQL データベースに書き込む Web ページを作成しています。

HTMLページの別のリンクをクリックして、同じデータベースにアクセス/読み取るRuby on Railsアプリケーションを作成する方法はありますか?

4

5 に答える 5

2

一般的なデータベースはそれぞれ、同時に多くの要求を処理するように設計されています。それがデータベースの主な機能であり、考え方です。そうでなければ、パフォーマンス、速度、およびセキュリティが大幅に低下します。
言語は、データベースに接続して操作するための単なるツールです。言語は依然として SQL 構文を使用しているため、すべての言語が DB で SQL ステートメントを実行することになります。あなたの質問に答えると、言語はまったく問題ではありません。

于 2013-05-14T21:38:22.720 に答える
2

はい、可能です。ただし、Rails には、アプリケーション レベルで制約と整合性を強制する規則があることに注意してください。これは、users というテーブルがあり、User モデルをセットアップして、ユーザーが電子メール アドレスを持っている必要があることを検証している場合、この制約は Rails アプリケーションにのみ適用されることを意味します。

そのため、Rails アプリケーションの誤動作を引き起こす方法で PHP アプリケーションがデータベースを操作しないようにする必要があります。たとえば、電子メール アドレスのないユーザーを挿入します。

于 2013-05-14T21:48:04.933 に答える
1

はい、使用しているテクノロジ スタックに応じて適切な API を使用してください。

サーバー DB ログを読み取るときに区別するために、ソリューションごとに DB 側で個別のユーザー名を使用することをお勧めします。

于 2013-05-14T21:28:16.453 に答える
-1

はい、可能です。ほとんどの場合、データベースはアプリケーションから独立しています。データベースに接続して有効な SQL を送信できるアプリケーションは、データベースに接続できます。

たとえば、SQL サーバー データベースとやり取りする php Web サイトがあるとします。別のアプリケーションである Management Studio がコンピューターにインストールされていて、権限があれば、そのデータベースに接続してクエリを実行できます。

同じデータベースに対して、接続資格情報があれば、それをクエリする ColdFusion または .net Web ページを作成できます。データベースは、それを呼び出しているアプリケーションを気にしません。権限と有効なSQLのみを気にします。

于 2013-05-14T22:48:30.723 に答える
-2

次の例のように、Rails アプリにモデルを含めることができますtransactions

class Transaction < ActiveRecord::Base
  attr_accessible :price, :product
end

次にconfig/database.yml、データベースの構成を次のように記述できます。

development:
  adapter: mysql2
  encoding: utf8
  reconnect: true
  database: development
  host: 11.111.11.11 # any host name
  port: 3306
  username: username
  password: password

test:
  ...

忘れずにmysql2宝石を入れてくださいGemfile

PHP 側から、通常どおりこのデータベースに接続できます。

<?php

$link = mysql_connect('11.111.11.11', 'username', 'password');
if (!$link) {
    die('Not connected : ' . mysql_error());
}

// select correct db for environment
$db_selected = mysql_select_db('development', $link);
if (!$db_selected) {
    die ('Can\'t use foo : ' . mysql_error());
}

$sql = "SELECT * FROM transactions";
$results = mysql_query($sql);
// ...
?>    
于 2013-05-14T22:38:53.890 に答える