-1

PHPで検索ページを作っていました。しかし、それは誤りです。私のエラーを教えてください。

エラーは次のとおりです。

注意: 未定義の変数: I:\xampp\htdocs\tsooj\includes\search_page.php の 22 行目の post_title

注意: 未定義の変数: 26 行目の I:\xampp\htdocs\tsooj\includes\search_page.php の post_content

ソースコードはこちら:

<div id="content-main">
    <?php
    include("includes/connect.php");
    
    if(isset($_GET['search'])){
    
    $search_id = $_GET['value'];
    
    $search_query = "select * from posts where post_keywords like '%$search_id%'";
    
    $run_query = mysql_query($search_query);
    
    while ($search_row = mysql_fetch_array($run_query)){
    
    $post_title = $search_row['post_title'];
    $post_image = $search_row['post_image'];
    $post_content = substr($search_row['post_content'],0,150);
    }
    ?>
<h1>Your Search Result is here:<h1>

<h2><?php echo $post_title; ?></h2>

<img src="images/<?php echo $post_image; ?>">;

<p><?php echo $post_content; ?></p>

<?php } ?>
    
</div>
4

6 に答える 6

1

変数$post_content;はステートメント内で定義されifます...ステートメント内でのみ使用されることを意図していifます....最初に外側で宣言してから、および/または他の場所、つまりパーツif内で呼び出します。ifecho

于 2013-09-07T08:52:58.790 に答える
1

これは、mysql_query() 関数がクエリを実行できないためです! 私はあなたのコードを書き直します:

<div id="content-main">
    <?php
    include("includes/connect.php");
    if(isset($_GET['search']) && isset($_GET['value'])){
    if(mysql_set_charset('utf-8')){
     $search_id = mysql_real_escape_string($_GET['value']);
     $search_query = "SELECT * FROM post WHERE post_keywords LIKE '%".$search_id."%'";
     $run_query = mysql_query($search_query);
     if($run_query){
         while ($search_row = mysql_fetch_array($run_query)){
         $post_title = $search_row['post_title'];
         $post_image = $search_row['post_image'];
         $post_content = substr($search_row['post_content'],0,150);
         echo "<h1>Your Search Result is here:<h1>
                    <h2>$post_title</h2>
                    <img src=\"images/$post_image\">;
                    <p>$post_content</p>
                    </div>";
    }
    else{
         echo 'Mysql error: '.mysql_error(); exit();
   }
  }
   else{
          echo 'Mysql couldn\'t set charset'; exit();
   }
}        
?>

更新: mysql_real_escape_string() 関数は、SQL インジェクトインを防ぐためにユーザー入力を消去します。

于 2013-09-07T08:52:59.720 に答える
0

$_GET['search']ページがロードされたときに変数が設定されていないため、 if ステートメントが実行されていないためと思われます。これは、 への参照がないことを意味し$post_titleます。

これを行う:

<h2><?php if (isset($post_title)){ echo $post_title;} ?></h2>
于 2013-09-07T08:56:30.220 に答える