-2

データベースでその列の値が1か0かを確認するために、テーブルの列名の値を渡すdisp関数が1つあります。値が 1 の場合は 1 を返す必要があります。それ以外の場合は 0 これは私が作成しようとした関数です。しかし、望ましい結果が得られません。

特定の行の列の値が 1 または 0 であることを確認する他の方法があれば教えてください

 function disp($x){
   @$ncenter=$_SESSION['ncenter'];
  $sql = "SELECT COUNT('$x') FROM sel WHERE 'numcenter' = '$ncenter' and '$x' = 1";
  $sql.=';';
   echo $sql;
 $res = mysql_query($sql);
  if(!$res) die ('Unable to run query:'.mysql_error());
  $row = mysql_fetch_array($res);
  if($row["COUNT('$x')"] > 0){

            return 0;
        }
      else{

            return 1; 
        }
 }

前もって感謝します

4

3 に答える 3

0

SQLCASEステートメントを使用できます。

SELECT (CASE WHEN `column_name` = '1' THEN 1 ELSE 0 END) AS `column_name_equals_one` FROM `table_name` WHERE `row_identifier_column_name` = 'row_identifier_value';

編集:それが私の目を傷つけるので、私もあなたのコードを書き直しました(私はこれをテストしていません)。

/**
 * Checks if the value of a specific field equals 1 or 0
 * 
 * @param string $columnName The name of the column
 * @param string $rowIdentifier The row identifier
 * @returns boolean|integer Returns false on failure or the query result as an integer on success
 */
function disp($columnName, $rowIdentifier) {
    $returnValue = false;

    $query = sprintf("SELECT (CASE WHEN `%s` = '1' THEN 1 ELSE 0 END) AS `result` FROM `table_name` WHERE `row_identifier_column_name` = '%s'", mysql_real_escape_string($columnName), mysql_real_escape_string($rowIdentifier));

    if (($result = mysql_query($query)) !== false) {
        if (($row = mysql_fetch_assoc($result)) !== false) {
            $returnValue = (int)$row['result']
        }

        mysql_free_result($result);
    }

    return $returnValue;
}
于 2012-06-21T11:29:45.553 に答える
0
// SELECT * FROM sel WHERE 'numcenter' = '$ncenter' and '$x' = 1 LIMIT 1

if(empty($row)){
    return 0;
}
else{
    return 1; 
}
于 2012-06-21T11:11:59.037 に答える
0

これを試して;

$row = mysql_result($res, 0, 0); 
$numb_of_rows = mysql_num_rows($row);
  if($numb_of_rows > 0){ 

            return 1; 
        } 
      else{ 

            return 0;  
        } 
于 2012-06-21T11:35:54.303 に答える