-2

データベースにデータを送信するフォームがあり、特定のデータを取得して Web ページに表示する URL の末尾にランダムな ID を持つ電子メール アドレスに電子メールを送信する Web サイトがあります。基本的に私がやっているバレンタインメッセージタイプのものです

データがデータベースに送信され、完全に保存されていることはわかっていますが、奇妙な理由でデータのプルに問題があります。

これが私のコードです。問題を引き起こしている可能性があるものはありますか?

<?php

// since the id is being passed in the url, you will need to declare it using the get method
$rand = $_GET['rand'];
$action = $_GET['action'];

// if an id was sent to the script, then execute it
if ($rand)
{
   // connection vars
   $host = "localhost";
   $user = "***";
   $password = "***";
   $dbname = "***";
   $tablename = "cards";


   $mysql = new mysqli('$host, $user, $password');
   $result = $mysql->query('SELECT * FROM $tablename WHERE rand = $rand');

   while (($row = $result->fetch_assoc()) !== null) {
      print_r($row);

      $youremail = urlencode($row['youremail']);
      $name = urlencode($row['name']);
      $receiveremail = urlencode($row['receiveremail']);
      $message = $row['message'];

      // replace non flash line breaks with the flash \r newline
      $message = str_replace('\n', '\r', $message);
      $message = str_replace('\r\n', '\r', $message);
      $message = str_replace('<br>', '\r', $message);
      $message = str_replace('%0D%0A', '\r', $message);

   }

   // if there was a result echo the stuff below
   if($result)
   {
      // if we have a result we can show the movie and pass the vars along in the strings
  // a set back with this is that you can only pass so much data in the string, think its like 256 characters, but Im not sure.

      echo "Hello, $name <br />";
      echo "$message";
      exit();
   }
   mysql_close();
}
?>
4

2 に答える 2

0

このクエリを試してみてください。

"SELECT * FROM $tablename WHERE rand = '$rand'"代わりは'SELECT * FROM $tablename WHERE rand = $rand'

うまくいかない場合は、テーブル名、フィールド名、および変数を確認してください。

于 2013-02-06T14:02:50.977 に答える
0

以下のコードに変更します。

issetあなたの、あなたのwhile ...ループを変更し、あなたの誤ったチェックを削除しました$resulturlencodeこれらの値を画面に表示する場合は意味がないため、使用していた呼び出しも削除しました。この関数は、次のページに変数を渡す便利な方法として、URL のクエリ部分で使用される文字列をエンコードするときに便利です。ここを参照してください。

最後に、通話でこれらの引用符を取り除きますnew mysqli()

<?php

// since the id is being passed in the url, you will need to declare it using the get method
$action = $_GET['action'];

// if an id was sent to the script, then execute it
if (isset($_GET['rand'])) {
   $rand = $_GET['rand'];

   // connection vars
   $host = "localhost";
   $user = "***";
   $password = "***";
   $dbname = "***";
   $tablename = "cards";

   $mysql = new mysqli($host, $user, $password, $dbname);

   /* check connection */
   if (mysqli_connect_errno()) {
      printf("Connect failed: %s\n", mysqli_connect_error());
      exit();
   }

   $result = $mysql->query("SELECT * FROM $tablename WHERE rand = '$rand'");

   while ($row = $result->fetch_assoc()) {
      print_r($row);

      $youremail = $row['youremail'];
      $name = $row['name'];
      $receiveremail = $row['receiveremail'];
      $message = $row['message'];

      // replace non flash line breaks with the flash \r newline
      $message = str_replace('\n', '\r', $message);
      $message = str_replace('\r\n', '\r', $message);
      $message = str_replace('<br>', '\r', $message);
      $message = str_replace('%0D%0A', '\r', $message);

      echo "Hello, $name<br />";
      echo $message;

   }
}
?>
于 2013-02-06T14:22:18.427 に答える