2011-07-12 10 views
1

t_s_lists_idのプライマリキーを持っています。今は、対応する列がすでに挿入されている場合はプライマリ値を取得します。対応する列が即座にある場合は、mysql_insert_id関数を使用して値を簡単に取得できます。しかし、価値がすでに存在するならばどうすべきでしょうか。プライマリ値の取得に関する問題

注:既に存在する列のプライマリ値を取得する場合は、結果としてResource id #5という値が得られます。

マイコードが..

if($txtbx1!="") { 
$result=mysql_query("select title from t_s_list where title='$txtbx1'"); 

    if(mysql_num_rows($result)!=0){ 
    $resultid=mysql_query("select s_id from t_s_list where title='$txtbx1'"); 
    print_r($resultid); } 

    else 
    { 
    $insert=mysql_query("Insert into t_s_list(title) values ('$txtbx1') "); 
    $resultid=mysql_insert_id(); 
    print_r($resultid); 
    } 
} 
else { 
    $msg="Text box empty"; 
} 
+0

最初の2つのクエリの背後にある論理は何ですか?最初は無用です –

+0

最初にタイトルが存在するかどうかをチェックし、それが存在する場合は対応する主キー値を選択しています。 – Aditii

+1

最初にチェックし、2番目にチェックします。 2番目のものを使用してください。 –

答えて

0
$result = mysql_query("select s_id from t_s_list where title='$txtbx1'"); 
$row = mysql_fetch_assoc($result); 
$resultid = $row['sid']; 
print_r($resultid); 
+0

私は直接クエリからs_idを選択しているときに、mysql_fetch_assoc関数が必要です。詳しく教えてください。 – Aditii

+0

mysql_queryは、1つのカラムだけをフェッチすることを認識しません。これは、データベースから結果セットを取得します。この結果セットは、使用することができます。この結果セットは、すべてのSELECTクエリの構造が同じです。 –

+0

Thanks..for help .. – Aditii

1

エミルは http://php.net/manual/en/function.mysql-query.phpするmysql_queryはResourceない文字列または整数を返し、正しいです。

リソースから結果テーブルにアクセスする方法は多数あります。 mysql_fetch_assoc()は、列ヘッダーを使用して指定された値を読み取る連想配列を返します。 つまり$ resource = mysql_query(...); $ results = mysql_fetch_assoc(); $ id = $ results ["columnIdentifier"]; mysql_fetch_array()は値の配列 を返します。つまり、$ resource = mysql_query(...); $ results = mysql_fetch_array(); $ id = $ results [0]; idがテーブルに返される最初の要素であると仮定します。

+0

あなたも試してみることができます $ results = mysql_query(... sql SELECT ...); if(!$ results) { $ results = mysql_query(... sql INSERT with SELECT ..); } $ myTable = mysql_fetch_array($ results); $ id = $ myTable [0]; // 0はidカラムを最初に返すと仮定しています – rlemon

関連する問題