0
PHP関数内でDRYの原理に違反することなくmysqliクエリを使用することはできません。私の関数の前に、私はMySQLの構成コード以下のいる :php関数はmysqli接続を認識しません
//database configuration
$config['mysql_host'] = "myhost.eu-west-2.rds.amazonaws.com";
$config['mysql_user'] = "mylogin";
$config['mysql_pass'] = "mypassword";
$config['db_name'] = "mydbname";
$config['table_name'] = "mytablename";
$connection = mysqli_connect($config['mysql_host'],$config['mysql_user'],$config['mysql_pass'], $config['db_name']);
そして、私の関数は次のようになります。
function writeLog($isError, $connection) {
global $ipLong, $datetime, $procedure_index, $gotResults;
$sql = "INSERT INTO user_log VALUES (NULL, ";
$sql .= "\"$ipLong\", \"$datetime\", \"$procedure_index\", \"$gotResults\", \"$isError\"";
$sql .= ");";
mysqli_query($connection, $sql);
}
:私も、このような入力変数などの接続を送信しようとした
function writeLog($isError) {
global $connection, $ipLong, $datetime, $procedure_index, $gotResults;
$sql = "INSERT INTO user_log VALUES (NULL, ";
$sql .= "\"$ipLong\", \"$datetime\", \"$procedure_index\", \"$gotResults\", \"$isError\"";
$sql .= ");";
mysqli_query($connection, $sql);
}
どちらも動作していません。私が見つけた唯一の可能性は、自分のデータベース構成をコピーして私の関数に貼り付けるときですが、オプションではありません。私は複数の関数でクエリを実行する必要があるからです。どうすれば修正できますか?
P.S.悪いが、コードを作業:
//database configuration
$config['mysql_host'] = "myhost.eu-west-2.rds.amazonaws.com";
$config['mysql_user'] = "mylogin";
$config['mysql_pass'] = "mypassword";
$config['db_name'] = "mydbname";
$config['table_name'] = "mytablename";
$connection = mysqli_connect($config['mysql_host'],$config['mysql_user'],$config['mysql_pass'], $config['db_name']);
function writeLog($isError) {
//database configuration, again. totally violating DRY principle.
$config['mysql_host'] = "myhost.eu-west-2.rds.amazonaws.com";
$config['mysql_user'] = "mylogin";
$config['mysql_pass'] = "mypassword";
$config['db_name'] = "mydbname";
$config['table_name'] = "mytablename";
$connection = mysqli_connect($config['mysql_host'],$config['mysql_user'],$config['mysql_pass'], $config['db_name']);
global $ipLong, $datetime, $procedure_index, $gotResults;
$sql = "INSERT INTO user_log VALUES (NULL, ";
$sql .= "\"$ipLong\", \"$datetime\", \"$procedure_index\", \"$gotResults\", \"$isError\"";
$sql .= ");";
mysqli_query($connection, $sql);
}
** WARNING **:あなたが使用する必要がありますmysqli' '使用する場合は、[パラメータ化クエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[ 'bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用して、クエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'、' $ _GET'、**任意の**ユーザデータを直接クエリーに入れないでください。誰かがあなたのミスを悪用しようとすると非常に危険です。 – tadman
ヒント:小さくしてください。築き上げる。たとえば、関数内に大きなクエリをハードコーディングしないなど、モジュール化したものをモジュール化してください。頻繁にテストし、何かが壊れたときに注意を払う。バージョンコントロールを使用して欠陥を特定する。 – tadman
「見えません」と定義します。あなたのコードは色盲ですか、サングラスをかけていますか? –