2017-09-28 11 views
0

クエリにリンクされた2つのテーブルがあります。割り当てテーブルには、電話機に割り当てられたテンプレートが格納されます。 templateinfoテーブルはすべてのテンプレート設定を保持し、templateinfo内にはテンプレート名があります。内部結合からファイルを作成するスクリプトがあります。スクリプトが実行する特定のテンプレートの名前を手動で入力すると、正しい数のファイルが作成されます。私の問題は、テンプレートの異なる名前の代入テーブルを照会し、ファイルを作成するために内部結合で使用する必要があることです。適用する必要のあるテンプレート名はいくつでもかまいません。ここに私が今持っているのは、水曜日のテンプレートが割り当てられている電話機に必要なすべてのファイルを作成する「水曜日」のテンプレート名です。クエリ内でクエリを実行するのに役立つ必要があります。

<?php 
require('/var/www/html/cqadmin/utils/connect.php'); 


// Check connection 
if (!$link) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 

// attempt insert query execution 
$sql = "INSERT INTO assignments 
       (extension, secret, macaddress, template) 
     VALUES (?,?,?,?)"; 

$result = $link->prepare($sql); 

foreach ($_POST['extension'] as $idx => $extension) { 
    $result->bind_param('ssss', 
         $extension, 
         $_POST['secret'][$idx], 
         $_POST['phone'][$idx], 
         $_POST['template'][$idx] 
         ); 

    if($result->execute()) { 
     echo "Records $idx added successfully."; 
    } else{ 
     echo "ERROR: Could not execute $sql. " . $result->error; 
     exit; 
    } 
} 

$sql2 = "select template from assignments"; 
$result2 = $link->query(sql2); 
$sql = "SELECT * FROM templateinfo INNER JOIN assignments ON template = templatename where assignments.template= Wednesday"; 
$result = $link->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) 
{ 

残りのスクリプトは、fwriteを使用してファイルを作成します。私が思う

+1

wednesdayは引用符で囲む必要はありませんが、assignments.template = 'Wednesday' ";しかし、私は本当にまだ問題/質問を立ててください。代入とtemplateInfoのPK/FK関係は何ですか? 'Template'と 'TemplateName'は不十分なようです。多分それは問題ありません。私はまだ両方のテーブルに関連する列を理解していません。 – xQbert

+0

質問:「水曜日」をどのように変数にするのですか(パラメータ)。テンプレート名を渡して関連する情報を得ることができますか? – xQbert

+0

水曜日は引用符で囲む必要があります。そこに私のキーが必要な私のキーを理解したので、両方のテーブル/行の名前水曜日のテンプレートでは、スクリプトはファイルを作成しますので、より明確にするためにtemplateinfoテーブルにtemplatenameフィールド名としては、フィールド名としてレコードがあります。これは1対多の関係です。 –

答えて

0

を探しているため

おかげで、それはあなた

$sql = "SELECT t1.id, t2.* FROM assignments t1 INNER JOIN templateinfo t2 ON t1.id = t2.templateId"; 
$result = $link->query($sql); 
if ($result->num_rows > 0) { 
// output data of each row 
    while($row = $result->fetch_assoc()) { 
    } 
} 

またはあなたのSQLのために動作します私はあなたのForeignKey列がれるtemplateId

であると思い列

$sql = "SELECT t1.*, t2.* FROM assignments t1 INNER JOIN templateinfo t2 ON t1.template = t2.templateName"; 

ごとに異なる場合があり

+0

Ankur Garg 2番目のクエリがトリックを行うようです!ありがとう –

関連する問題