0

ドロップダウンメニューでフォームを作成しようとしています。フォームの値はデータベースに保存されます。後でフォームの値を変更できるようにしたいのですが、データベースに入力された値が入力されたフォームに戻ることで変更できます。

ドロップダウンメニューを除いて、すべてが機能しているようです。すべてのフィールドに正しい値を入力したいので、これはメニューにも当てはまります。そこで、if-else句で文字列比較を使用して、選択済みとして設定するオプションを決定してみました。しかし、文字列の比較は機能しません。コード例は次のとおりです。

$query = mysql_query(SELECT * FROM data);
$result = mysql_fetch_assoc($query);

if(strcmp($result['pet'],"Dog")==0)
{
    echo "
        <option value='Dog' selected>Dog</option>
        <option value='Cat'>Cat</option>
        <option value='Bird'>Bird</option>
    ";
}
elseif(strcmp($result['pet'],"Cat")==0)
{
    echo "
        <option value='Dog'>Dog</option>
        <option value='Cat' selected>Cat</option>
        <option value='Bird'>Bird</option>
    ";
}

私も試しました:

if(result['pet']=="Dog")
{
    .....
}
elseif(result['pet']=="Cat")
{
    .....
}

if(strcmp(trim(reuslt['pet']),trim("Dog"))==0)
{
    .....
}
elseif(strcmp(trim(result['pet']),trim("Cat"))==0)
{
    .....
}

しかし、何も機能しません。照合に関係しているのではないかと思うので、値を選択するときに変更してみました。

$query = mysql_query("SELECT * COLLATE latin_1 FROM data");
$result = mysql_fetch_assoc($query);

これにより、 「警告:mysql_fetch_assoc()は、パラメーター1がリソースであると想定しています。ブール値は/opt/lampp/htdocs/PHP/control.phpの12行目にあります」というエラーメッセージが表示されます。

だから、何が問題なのですか、そしてどうすればそれを修正できますか?

編集:クエリを少し変更しました:

$query = mysql_query("SELECT * FROM data WHERE user='$user' COLLATE uft8_general_ci") or die(mysql_error());

これから、次のエラーが発生します。

COLLATION'utf8_general_ci'は、CHARACTERSET'latin1'には無効です。

照合をlatin1_general_ciに変更すると、次のようになります。

操作'='の照合(utf8_swedish_ci、IMPLICIT)と(latin1_general_ci、EXPLICIT)の不正な組み合わせ

データベースの列に使用している照合は、それが役立つ場合はutf8_swedish_ciです。

4

1 に答える 1

1

mysql_queryクエリが失敗するとブール値(false)が返されるため、このエラーが発生します。問題をより適切に説明するには、次の手順を実行してください。

$result = mysql_query('SELECT * COLLATION latin_1 FROM data');
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

問題は、クエリが無効であるということです-使用しCOLLATEないでください...どのように機能COLLATIONするかについての適切な説明については、以下を参照してください-基本的に、グループではなく単一の列に対して使用します()COLLATECOLLATE*

于 2012-06-19T09:36:35.273 に答える