1

更新: $_GET 変数のいくつかの付随する検証で、軽微な構文エラーが発生しているはずです。すべてを慎重に書き直したところ、スクリプトが機能するようになりました。皆さん、ありがとうございました!

コードの問題点を見つけるのに 5 時間以上費やしました。

最初のページ: データベース クエリは、データベースからいくつかの vimeo ビデオを取得し、ビデオの ID (vimeo の 8 桁の ID) を動的に取得する「編集」リンクを各ビデオに表示します。これを行うには、次の関数を呼び出すだけです。

function edit_portfolio_videos() {
global $connection;
$query = "SELECT * FROM portfolio_videos ORDER BY video_id ASC";
$portfolio_videos_set = mysql_query($query, $connection);
confirm_query($portfolio_videos_set);
while ($portfolio_video = mysql_fetch_array($portfolio_videos_set)) {
    echo "<iframe src=\"http://player.vimeo.com/video/";
    echo $portfolio_video['video_code'];
    echo "?title=0&amp;byline=0&amp;portrait=0&amp;color=ffffff\" width=\"400\" height=\"230\" frameborder=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe><br />";
    echo "<a href=\"edit_portfolio_video.php?videocode={$portfolio_video['video_code']}\">Edit this Video</a>";
    }
}

2ページ目:管理者が各動画を編集するページです。URL の例は、「http://www.my_website.com/edit_portfolio_video.php?videocode=34956540」のようなものです。このページでは、次の関数を使用して、前のページのスクリプトから配列を取得します。

function get_selected_video_by_id($video_code) {
global $connection;
$query = "SELECT * FROM portfolio_videos ";
$query .= "WHERE video_code = '$video_code' ";
$query .= "LIMIT 1";
$videos_set = mysql_query($query, $connection);
confirm_query($videos_set);
if ($video = mysql_fetch_array($videos_set)) {
    return $video;
} else { $video = NULL; }

}

その後...

$selected_video = get_selected_video_by_id($_GET['videocode']);

選択したビデオに関連するあらゆる種類のデータを編集フォームに入れるには:

<form action="edit_portfolio_video.php?videoid=<?php echo $selected_video['video_code']; ?>" method="post">
            <input type="text" name="video_title" value="<?php echo $selected_video['video_title']; ?>" />  
            </p>
            <p>Video Code (vimeo):<br />
            <input type="text" name="video_code" value="<?php echo $selected_video['video_code']; ?>" />
            </p>
            <p>Video Description:<br/>
            <textarea name="video_description" rows="5" cols="70"><?php echo $selected_video['video_description']; ?></textarea>    
            </p>
            <p>
            <input type="submit" name="submit" value="Save Video" />    
            </p>
</form>

しかし、取得しようとしている $video 変数 (get_selected_video_by_id 関数から返される) に問題があるように見えるため、フォームのフィールドには値が入力されません。ビデオ コードは、データベースに「INT」(長さ: 11) として格納され、2 ページ目の URL に文字列として出力されます。関数のクエリをさまざまな方法で記述しようとしましたが、機能させることができません。

これについて少し助けていただければ幸いです、ありがとうございました。

注: confirm_query 関数は、次の単純なジョブを実行します。

function confirm_query($result_set) {
if (!$result_set) {
    die("Database query failed: " . mysql_error());
}

}

4

2 に答える 2

0

get_selected_video_by_id SQLクエリの代わりにこれを試してみるべきだと思います.

$query = "SELECT * FROM portfolio_videos WHERE video_code = ".$video_code;

もちろん、パラメータでの SQL インジェクションに注意してください。また、誰かがすでに提案しているように、PDO または MySQLi の使用を検討してください。

于 2012-09-17T18:44:49.177 に答える
0

フォームが奇妙に見えます: POST モードを使用して GET 値を渡しています (edit_portfolio_video.php?videoid=...etc...)。しかし、これは問題ではないはずです。

この行で:

$selected_video = get_selected_video_by_id($_GET['videocode']);

渡している GET パラメータが videocode であると確信していますか? それともビデオIDですか?

于 2012-09-17T19:01:43.710 に答える