1

データベースから特定の船に関する情報を表示する PHP ページ (ship_info.php) があります。各船は、一意の ship_id でソートされます。

前または次の船にアルファベット順に移動するには、ページ上のリンクを取得する必要があります。別のphpファイル(gotoship.phpと呼ばれる)を使用することをお勧めします。したがって、現時点では、前のリンクに次のリンクがあります。

  <!--go to previous ship-->
  <div class="arrow_shipinfo_left">
  <a href="gotoship.php?action=previous&amp;current_ship_id=<?php echo $row_ship_image_info['ship_id']; ?>">
<img src="images/arrow_left.png" width="51" height="57" alt="back" border="none"/>
  </a>
  </div>

したがって、「gotoship.php?action=previous¤t_ship_id=7」のようなリンクになります。私は gotoship.php をうまく動作させることができません。誰かが私が間違っている場所に光を当てることができますか? 現在、配列から文字列への変換エラーが発生しています。このようなページにリンクする必要があります (shipinfo.php?ship_id=7)

私の gotoship.php は次のようになります。

<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_ships, $ships);
$query_ships = "SELECT TOP 1        ships.ship_id FROM   ship_information  INNER   JOIN (         SELECT ship_name FROM ship_information WHERE ship_id = $_GET'current_ship_id'        ) As current_ship     ON ships.ship_name < current_ship.ship_name ORDER BY ships.ship_name ASC";
$ships = mysql_query($query_ships, $ships) or die(mysql_error());
$row_ships = mysql_fetch_assoc($ships);
$totalRows_ships = mysql_num_rows($ships);
echo $current_ship_id;
 echo "<br><br>";
?>
4

1 に答える 1

1

これは、SQL インジェクションに対してオープンです。それが何を意味するのかを読んで、pdo または少なくとも mysqli に切り替えることを検討する必要があります。このクエリは (クエリ自体が正しい限り) GET ( ?ship_id=[the id that goes here]) で提供された ID に基づいて船を選択します。

mysql_select_db($database_ships, $ships);
$query_ships = "
SELECT ships.ship_id
FROM ship_information
INNER JOIN (
    SELECT ship_name 
    FROM ship_information 
    WHERE ship_id = '$_GET[ship_id]')
    AS current_ship
    ON ships.ship_name < current_ship.ship_name 
ORDER BY ships.ship_name ASC";
$ships = mysql_query($query_ships, $ships) or die(mysql_error());
$row_ships = mysql_fetch_assoc($ships);
$totalRows_ships = mysql_num_rows($ships);
echo $current_ship_id;
echo "<br><br>";
于 2013-07-09T09:35:58.810 に答える