2016-09-19 8 views
0

10個以上の列を含む長い挿入クエリがあります。私のようなこのクエリを構築するコンパクトな方法を探しています:PHP - MySQLi: "値"部分を持つクエリを作成する

$mysqli = new MySQLi(...); 
$mysqli->query("insert into table"); 
$mysqli->addKeyValue("columnName1", "value1"); 
$mysqli->addKeyValue("columnName2", "value2"); 
$mysqli->addKeyValue("columnName"3, "value3"); 
$mysqli->execute(); 

は、私の知る限りでは、デフォルトのMySQLiをしてこれを行う方法はありません。 simhilar機能を提供するライブラリですか?

UPDATE:

私はこのような何かをしようとする主張の理由は、私はdoesntのは、私のコードを読みやすくするために行あたり80〜100文字の制限を超えていること、コードを記述しようとしていますです。

私はpreapredステートメントとバインドparamを知っています。

+0

パラメータ化クエリと私には、その後 'bind_param()' [マニュアル](http://php.net/manual/en/mysqli-stmt.bind-param.php) – RiggsFolly

+0

のように私はそれをkonwが、場合ルックスあなたは列をたくさん持っていますが、それでもそれらを並べて書く必要があります。私はそれらを一つずつ追加したい。 –

+0

私は違いを見ない、 'bind_param()'で何が間違っているのですか – RiggsFolly

答えて

1

から食い物に。

1つは、PDOという名前です。

$pdo = new PDO(...); 
$stmt = $pdo->prepare("insert into table"); 
$stmt->bindValue("columnName1", "value1"); 
$stmt->bindValue("columnName2", "value2"); 
$stmt->bindValue("columnName"3, "value3"); 
$stmt->execute(); 

もう一つは、私はmysqliのを使用可能にするために書いたSafeMysqlです:それを使用すると、正確にあなたがあなたの質問にそれを書いたのと同じ方法を行うことができます。それでアプローチは違うでしょう:

include_once 'safemysql.class.php'; 
$db = new safeMysql(); 
$data = [ 
    "columnName1" => "value1", 
    "columnName2" => "value2", 
    "columnName3" => "value3", 
]; 
$db->query("insert into table SET ?u", $data); 

ご覧のとおり、どちらの場合も、行サイズは40文字を超えません。

0

どうすればbind_paramが間違っているのですか?これはあなたがやるべきことと非常によく似ています。

$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)"); 
$stmt->bind_param('sssd', 
        $code, 
        $language, 
        $official, 
        $percent); 

$code = 'DEU'; 
$language = 'Bavarian'; 
$official = "F"; 
$percent = 11.2; 

/* execute prepared statement */ 
$stmt->execute(); 

// add another row 
$code = 'XXX'; 
$language = 'Yyyyyyyy'; 
$official = "Y"; 
$percent = 19.2; 

/* execute prepared statement */ 
$stmt->execute(); 

Shamlesslyは、私はあなたがやりたいことができます2つのライブラリを提供することができ、手動

+0

違いは、20列の '$ stmt-> bind_param()'行を書く必要があるとしましょう。 –

+0

これは私の質問に対する答えではありません。これはコードを書いている私の好みです。私は行ごとに各列の値を追加するwnat。 –

+0

私は非常に長いコード行が好きではありませんし、横にスクロールせずに読みやすくするために、80-100文字を超えない長さのコードをワイヤリングしようとしています。 –

関連する問題