-1

以下のコードは、ユーザーが YouTube の URL を入力するときに使用され、URL から YouTube ID を取得します。次に、その ID を持つそのビデオのタイトルを取得します。次に、それがデータベースに挿入され、呼び出されて、その ID に関連付けられたビデオの画像が表示されます。

この YouTube URL http://www.youtube.com/watch?v=p64tAbP-nHEまたはその他の YouTube URL を使用する場合。その YouTube URL のタイトルに 'ie(2013 Ravens Rock Rally - Jonathan O'Callaghan & Gavin Sheehan - Stage 3) が含まれている場合、エラーが発生します。

エラー: SQL 構文にエラーがあります。1 行目の「Callaghan & Gavin Sheehan - Stage 3」の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

事前に感謝します。

これが私のコードです:

<?php
include 'dataconnection.php';
// Check connection
if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    else        
        $url = $_POST['set_video'];
        parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );

        $youtube_id = $my_array_of_vars['v'];

        $info = $_POST['set_desc'];

        $id = $my_array_of_vars['v'];
        $xmlData =  simplexml_load_string(file_get_contents("http://gdata.youtube.com/feeds/api/videos/{$id}?fields=title"));

        $title = (string)$xmlData->title;

        $sql="INSERT INTO videodetails SET id='null',youtube_id='$youtube_id',info='$title'";

        if (!mysqli_query($connection,$sql))
          {
          die('Error: ' . mysqli_error($connection)); 
          }
        echo "<div id='pageheader'>
                1 record added<span id='logout'>Return to <a href='contributors_login.html'>Contributors Login</a></span>  
             </div>";

        echo '<div id="setvideo"><a href="http://www.youtube.com/watch?v='.$my_array_of_vars['v'].'" target="_blank"><img src="http://i4.ytimg.com/vi/'.$my_array_of_vars['v'].'/default.jpg" style="border:solid 2px white;"></a><p>'.$title.'</p></div>';

    mysqli_close($connection);  
?>
4

4 に答える 4

3

mysqli_real_escape_stringあなたの部分で使用してくださいINSERT INTO ...

一重引用符を開きます。ただし、タイトルには一重引用符も含まれているため、閉じられます。MySQL はこれを認識せず、続くテキストが MySQL キーワードであると考えます。

于 2013-07-08T22:51:01.950 に答える
2

yourTube 名には引用符が含まれているため、SQL 行

$sql="INSERT INTO videodetails SET id='null',youtube_id='$youtube_id',info='$title'

これになる

INSERT INTO videodetails SET id='null',
   youtube_id='2013 Ravens Rock Rally - Jonathan O'Callaghan & Gavin Sheehan - Stage 3'

MySQLはこれを次のように認識します

INSERT INTO videodetails SET id='null',
   youtube_id='2013 Ravens Rock Rally - Jonathan O',Callaghan & Gavin Sheehan - Stage 3'

MySQL はCallaghan と Gavin Sheehanを理解していない- ステージ 3'

于 2013-07-08T22:50:23.377 に答える
1

挿入クエリは有効な SQL ではありません。キーワード「set」は、更新クエリで使用されます。挿入クエリは次のようになります。

insert into atable
(f1, f2, etc)
values
(val1, val2, etc)

またはこれ

insert into atable
(f1, f2, etc)
select val1, val2, etc
from someOtherTables
于 2013-07-08T22:48:52.123 に答える