0

phpとmysqlに関しては、私は週末の戦士です。ほとんどの場合、Dreamweaver 8を使用してコードを作成していますが、必要に応じてTextWranglerで手動コーディングを行っています。

28列で、現在1224行のテーブルがあります(そして増え続けています)。DW8を使用して、高度な検索ページのコードを作成しました。行の1つ以上の列にNULLがある場合(多くの列がNULLを含む)、そのレコードを取得しないことを除いて、これはうまく機能します。これは問題だ。NULL値を無視して、とにかくレコードを取得する必要があります。

テーブル内のすべてのレコードを変更して、スペースやダッシュなどのNULL以外のものを含めると、クエリでレコードが検出されることがわかりました。新しいレコードが入力されると、テーブルに新しいNULLが追加され、それらのレコードは検索できなくなります。

[レコードの追加]ページがこのテーブルと別のテーブルに挿入され、順番に並んでいる必要があるため、これらの列はNULLを許可する必要があります。列をNULLを受け入れないように設定し、一方のテーブルがデータを受け入れ、もう一方のテーブルがデータを拒否すると、主キーの同期が外れることがわかりました。

<?php require_once('Connections/mediadb.php'); ?>
<?php $currentPage = $_SERVER["PHP_SELF"]; ?>

if (isset($_GET['pageNum_rsResults'])) {
$pageNum_rsResults = $_GET['pageNum_rsResults'];
}
$startRow_rsResults = $pageNum_rsResults * $maxRows_rsResults;

$varkind_rsResults = "-1";
if (isset($_GET['searchkind'])) {
  $varkind_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchkind'] : addslashes($_GET['searchkind']);
}
$varcomments_rsResults = "-1";
if (isset($_GET['searchnotes'])) {
  $varcomments_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchnotes'] : addslashes($_GET['searchnotes']);
}
$varrating_rsResults = "-1";
if (isset($_GET['searchrating'])) {
  $varrating_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchrating'] : addslashes($_GET['searchrating']);
}
$varloc_rsResults = "-1";
if (isset($_GET['searchlocation'])) {
  $varloc_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchlocation'] : addslashes($_GET['searchlocation']);
}
$vardiscnum_rsResults = "-1";
if (isset($_GET['searchdisc_number'])) {
  $vardiscnum_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchdisc_number'] : addslashes($_GET['searchdisc_number']);
}
$vardisccnt_rsResults = "-1";
if (isset($_GET['searchdisc_count'])) {
  $vardisccnt_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchdisc_count'] : addslashes($_GET['searchdisc_count']);
}
$vartrackcnt_rsResults = "-1";
if (isset($_GET['searchtrack_count'])) {
  $vartrackcnt_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchtrack_count'] : addslashes($_GET['searchtrack_count']);
}
$vartracknum_rsResults = "-1";
if (isset($_GET['searchtrack_number'])) {
  $vartracknum_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchtrack_number'] : addslashes($_GET['searchtrack_number']);
}
$varyear_rsResults = "-1";
if (isset($_GET['searchyear'])) {
  $varyear_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchyear'] : addslashes($_GET['searchyear']);
}
$varmod_rsResults = "-1";
if (isset($_GET['searchmodified'])) {
  $varmod_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchmodified'] : addslashes($_GET['searchmodified']);
}
$varadd_rsResults = "-1";
if (isset($_GET['searchdate_added'])) {
  $varadd_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchdate_added'] : addslashes($_GET['searchdate_added']);
}
$varrecnum_rsResults = "-1";
if (isset($_GET['searchrecnum'])) {
  $varrecnum_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchrecnum'] : addslashes($_GET['searchrecnum']);
}
$vartime_rsResults = "-1";
if (isset($_GET['searchtime'])) {
  $vartime_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchtime'] : addslashes($_GET['searchtime']);
}
$vargenre_rsResults = "-1";
if (isset($_GET['searchgenre'])) {
  $vargenre_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchgenre'] : addslashes($_GET['searchgenre']);
}
$vargroup_rsResults = "-1";
if (isset($_GET['searchgrouping'])) {
  $vargroup_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchgrouping'] : addslashes($_GET['searchgrouping']);
}
$varalbum_rsResults = "-1";
if (isset($_GET['searchalbum'])) {
  $varalbum_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchalbum'] : addslashes($_GET['searchalbum']);
}
$varcomp_rsResults = "-1";
if (isset($_GET['searchcomp'])) {
  $varcomp_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchcomp'] : addslashes($_GET['searchcomp']);
}
$varartist_rsResults = "-1";
if (isset($_GET['searchartist'])) {
  $varartist_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchartist'] : addslashes($_GET['searchartist']);
}
$varname_rsResults = "-1";
if (isset($_GET['searchname'])) {
  $varname_rsResults = (get_magic_quotes_gpc()) ? $_GET['searchname'] : addslashes($_GET['searchname']);
}
mysql_select_db($database_mediadb, $mediadb);
$query_rsResults = sprintf("SELECT recnum, name, artist, composer, album, `grouping`, genre, `time`,  year, date_modified, date_added, kind, comments, my_rating, location, track_number, track_count, disc_number, disc_count 
FROM media_lib
WHERE name LIKE '%%%s%%' AND artist LIKE '%%%s%%' AND composer LIKE '%%%s%%' AND album LIKE '%%%s%%' AND `grouping` LIKE '%%%s%%' AND genre LIKE '%%%s%%' AND `time` LIKE '%%%s%%' AND recnum LIKE '%%%s%%' AND date_added LIKE '%%%s%%' AND date_modified LIKE '%%%s%%' AND year LIKE '%%%s%%' AND track_number LIKE '%%%s%%' AND track_count LIKE '%%%s%%' AND disc_number LIKE '%%%s%%' AND disc_count LIKE '%%%s%%' AND kind LIKE '%%%s%%' AND comments LIKE '%%%s%%' AND my_rating LIKE '%%%s%%' AND location LIKE '%%%s%%'", $varname_rsResults,$varartist_rsResults,$varcomp_rsResults,$varalbum_rsResults,$vargroup_rsResults,$vargenre_rsResults,$vartime_rsResults,$varrecnum_rsResults,$varadd_rsResults,$varmod_rsResults,$varyear_rsResults,$vartracknum_rsResults,$vartrackcnt_rsResults,$vardiscnum_rsResults,$vardisccnt_rsResults,$varkind_rsResults,$varcomments_rsResults,$varrating_rsResults,$varloc_rsResults);
$query_limit_rsResults = sprintf("%s LIMIT %d, %d", $query_rsResults, $startRow_rsResults, $maxRows_rsResults);
$rsResults = mysql_query($query_limit_rsResults, $mediadb) or die(mysql_error());
$row_rsResults = mysql_fetch_assoc($rsResults);

if (isset($_GET['totalRows_rsResults'])) {
  $totalRows_rsResults = $_GET['totalRows_rsResults'];
} else {
  $all_rsResults = mysql_query($query_rsResults);
  $totalRows_rsResults = mysql_num_rows($all_rsResults);
}
$totalPages_rsResults = ceil($totalRows_rsResults/$maxRows_rsResults)-1;

$queryString_rsResults = "";
if (!empty($_SERVER['QUERY_STRING'])) {
  $params = explode("&", $_SERVER['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_rsResults") == false && 
        stristr($param, "totalRows_rsResults") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_rsResults = "&" . htmlentities(implode("&", $newParams));
  }
}
$queryString_rsResults = sprintf("&totalRows_rsResults=%d%s", $totalRows_rsResults, $queryString_rsResults);
?>
4

1 に答える 1

0

句で s を(たとえば)空の文字列にifnull変換するために使用できるはずです。たとえば、になります。NULLWHEREname LIKE '%%%s%%'ifnull(name, '') LIKE '%%%s%%'

現在のコードと同様に、さまざまな$_GETパラメーターが設定されていることを前提としています。パラメーターが設定されていない場合、使用しているものと一致し-1ません。

于 2013-01-01T14:24:27.897 に答える