2016-05-13 13 views
1

タイトルが不思議に言われてもごめんなさい。これは私がここに何かを尋ねる初めてのことです、そして、私はPHPをかなり慣れていますので、これを理解するのに苦労しています。PHP SQLクエリで複数のプレースホルダを置き換える方法

基本的に私は私のウェブサイトから特定のゲームインスタンスのルールを変更できるPHPスクリプトを作成しようとしています。そのため、毎回データベースに入りSQLのクエリを実行する必要はありません。

この

は、私がこれまで持っているものです。

public function update_rules() 
    { 
     $rules = $this->input->post('rules'); 
     $domains = $this->input->post('domains_multiselect'); 

     $qarr = array(); 
     $sql = " 
        UPDATE domains 
        SET rules = ? 
        WHERE domain_id = ? 
        "; 

     $qarr[] = $rules; 
     $qarr[] = $domain_id; 

     $query = $this->db->query($sql,$qarr); 

     redirect ("admin/insert_rules"); 

    } 

私はどのようにsubstr_replace()を変更するに分かりませんよ「?」プレースホルダをクエリに入力すると、手動で入力したルールとdomain_idの両方を入力できるようになります。ドメイン名が選択されたときに生成されると思います。

私はここから完全に離れているかもしれませんが、誰かが何らかの方向で私を指すことができれば、それはすばらしいでしょう。ありがとうございました。

+0

という名前のプレースホルダまたは位置依存プレースホルダのいずれかを使用することができます。文字列置換を行うのではなく、prepare()execute()シーケンスを行うべきです。ドキュメンテーションはこちら:http://php.net/manual/en/pdostatement.execute.php – danielml01

答えて

1

あなたはPDO準備されたステートメントで作業しているように見えます...

//Position dependent: 
$stmt = $this->db->prepare("UPDATE domains SET rules = ? WHERE domain_id = ?"); 
$stmt->bindParam(1, $rules); 
$stmt->bindParam(2, $domain_id); 
$stmt->execute(); 

//Named Placeholder: 
$stmt = $this->db->prepare("UPDATE domains SET rules = :rules WHERE domain_id = :domain"); 
$stmt->bindParam(':rules', $rules); 
$stmt->bindParam(':domain', $domain_id); 
$stmt->execute(); 
関連する問題