2011-08-15 31 views
1

私は非常に単純な問題であると感じることに対する解決策を探してきました。mysqlテーブルから別のテーブルにphpレコードを挿入してください

私は、一意のIDを持つビデオを持つ動的に作成されたページを持っています。また、ユーザーがコンテンツを提出できる形式もあります。私は、ビデオのIDをtableAへの提出に含めることを望みます。

このコードは素晴らしい作品場合にのみ、$ ID =

$vidq = "SELECT * FROM tutorials"; 
$vidresult = mysql_query($vidq); 
$vidrow = mysql_fetch_array($vidresult); 

//form submission 
if($_POST['formname'] == "submit") { 

$name = $_POST['name']; 
$id = $vidrow['id']; 
$errorMessage = ""; 
if(empty($name)) { 
    $errorMessage .= "<li>Please enter a valid name</li>"; 
    } 

if(empty($errorMessage)) { 

    $insert = "INSERT INTO tableA (videoid, name) VALUES (".$id.", ".$name.")"; 

    mysql_query($insert); 
    exit(); 
    } 
} 

I = 1、それポストに$ IDを変更するが、= $ vidrow [ 'ID']に$ idはそれはdoesnのとき1ポスト。

私は間違っていますか?

+3

[Bobby Tables](http://xkcd.com/327/)にご注意ください。その後、 'list($ vidrow)= mysql_fetch_array(...)'を試してください –

+2

フォームのビデオの 'id'を保存しませんか? tutorialsテーブルからランダムな行を選択し、その 'id'を使用しています。フォームの隠れた入力にフォームに関連付けられたビデオのIDを持たせ、その名前と同じ '$ _POST'からそれを読み取る必要があります。 '$ name'の値がエスケープされていないか、一重引用符で囲まれていないという問題もあります。 –

+0

@Linusなぜ彼はそれをしたいと思いますか? mysql_fetch_arrayは連想配列として1行を返します。これは彼がそれをどのように使用しようとしているかです。 –

答えて

-1

mysql_errno/mysql_errorを使用してmysqlエラーメッセージを表示してみてください。例えば...

if (!mysql_query($insert)) 
{ 
    die('MySQL Fail (' . mysql_errno() . ') - ' . mysql_error()); 
} 

にmysql_errno()のドキュメント - http://php.net/manual/en/function.mysql-errno.php

-2
  1. あなたは$id = $vidrow['id'];$idの内容をプリントアウトしようとしたことがありますか?あなたが望むように動作しない理由を明らかにするかもしれません...

  2. 悪意のある(または好奇心を抱く)ユーザーが?name=%27%27%29%3b%20DROP%20TABLE%20tableA%3Bであなたのスクリプトを呼び出すとどうなるか考えましたか?

+0

はい。フォームを正しく提出した後、そのコードを追加するのが最も簡単だと思いました。しかし、ありがとうございます。 – sundanlotion

+0

これは可能な戦略ですが、何らかの理由で忘れられてしまうリスクがあります。すぐにこのことをやり直してください。これは 'mysql_real_escape()'の呼び出しです。ちょうど言及する。 – glglgl

関連する問題