1

データベースのアイテムをインデックスに表示しようとしていますが、テーブル全体ではなく、必要な ID からのみ表示します。これまでのところ、これを試しましたが、うまくいきません:

Download.php

<?php

$id = $_GET['id'];

$con=mysqli_connect("kennyist.com","user","pass","table");

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM `wp_wpfb_files` WHERE `file_id`=" . $id);

$row = mysqli_fetch_array($result)

mysqli_close($con);
?>

そして、私はこのようにエコーしようとしています(前にこのようなものを見ました):

<div class="version"><?php echo('download.php?id=27', $row['file_version']);?></div>
4

3 に答える 3

1

まず第一に、mysqli_connect非推奨の mysqli 関数に含まれるようになりました! つまり、代わりにオブジェクト指向バージョンを使用することをお勧めします!

これを行う方法の例を次に示します。

$link = new mysqli ("kennyist.com","user","pass","table");

/* 
if id is a string then go for this version 

$id = $link->real_escape_string($_GET['id']);
*/

$id = intval($_GET['id']); // if id is integer, this is better 

if ( $link->errno )
{
    echo "Failed to connect to MySQL: {$link->error}";
}

$result = $link->query("SELECT * FROM `wp_wpfb_files` WHERE `file_id` = $id");

if ( $result->num_rows ) $row = $result->fetch_assoc();

$link->close();

プリペアド ステートメントを使用するのがさらに良いでしょうが、それらに慣れていないと、最初は少し難しいかもしれません。とにかく、これで要求通りのことができるようになりました!

<div class="version">
    <?php echo "download.php?id=27{$row['file_version']}"; ?>
</div>

エラーの発生を防ぐために、エコーアウトしようとしているものは、まだいくつかのことが真実である必要があります。

  • file_versionテーブル内の列である必要があります
  • $_GET['id']適切な$id
  • 対応するテーブルにレコードが存在する必要がありますfile_id

知らせ

echo "download.php?id=27{$row['file_version']}";

idどのページでも常に同じように出力されます。おそらく必要なのは、権利file_idを download.php ページに転送することです! あなたは次のようなものでこれを行います:

echo "download.php?id={$row['file_id']}&version={$row['file_version']}";

ヒント

mysqli_fetch_arrayは、デフォルトでインデックスと連想の両方の配列をフェッチします。インデックス付きの配列が必要ない場合は、代わりにmysqli_fetch_assocを使用してください。

mysqli_fetch_arrayフェッチされた行に対応する配列を返すか、結果パラメーターによって表される結果セットにそれ以上行がない場合は NULL を返します。

mysqli_fetch_assocフェッチされた行に対応する連想配列を返すか、それ以上行がない場合は NULL を返します。

お役に立てれば!

于 2013-05-02T00:35:04.147 に答える