1

私は自分のコードで一日中バグを追いかけてきました。これがその長短です:

クエリ文字列を介して渡される変数があり、MySQLiクエリでその変数を使用したいと思います。A-のように:

$variable;

$info = dbConnect('query');
$eInfo = "SELECT *
FROM tablename
WHERE fieldname = '$variable%'";
$eiData = $info->query($eInfo) or die(mysqli_error());
$eInfo = $eiData->fetch_assoc();

強調されるのは、変数名の後の%です。私はPHPの専門家ではありませんが、しばらく前にこのトリックを取り上げたことを覚えています。これは、開発中の新しいWebサイトを除くすべてのDB駆動型Webサイトで機能しました。

上記のクエリは、テーブルからデータを返しません。

しかし...

次のように%を省略した場合:

$variable;

$info = dbConnect('query');
$eInfo = "SELECT *
FROM tablename
WHERE fieldname = '$variable'";
$eiData = $info->query($eInfo) or die(mysqli_error());
$eInfo = $eiData->fetch_assoc();

クエリが実行され、データが取得されます。

構文「$variable%」を使用して変数を使用したいクエリを作成した後、これが機能しなくなるのはなぜですか?%('$ variable')を削除するだけで、A-OKで動作するようになり、完全に困惑します。

価値があるので、私は専用サーバーを実行し、suPHPが最近インストールされました。それがここで意味をなすのに役立つ可能性がリモートにある場合(PHP 5.2.17が私の現在のバージョンです)。

繰り返しになりますが、私はPHPの専門家ではありませんが、MySQLiクエリで行った古いサイトのコードを確認した後、クエリに変数を追加するときに%が常に存在していました。

私はここの水で完全に死んでいます。あなたが提供できるどんな助けも、それが説明に反するほどめちゃくちゃに感謝されるでしょう。

4

2 に答える 2

0

変数名の末尾を解釈するのが難しい文字列に変数を入れたい場合は、次の{$var}ように使用します。

$eInfo = "SELECT * FROM tablename WHERE fieldname LIKE '{$variable}%'"; 
于 2012-06-14T19:09:08.067 に答える
0

はクエリ%のワイルドカードです。LIKEしたがって%、クエリでを使用するとWHERE var = 'cow%'、データベースでリテラル文字列が検索されますcow%

  1. cow
  2. cows
  3. cow%(マッチ)
  4. the cow

Like クエリWHERE var LIKE 'cow%'の場合: 以下が一致します。

  1. cow(マッチ)
  2. cows(マッチ)
  3. cow%(マッチ)
  4. the cow

MySQL パターン マッチングを参照してください。

于 2012-06-14T19:27:17.670 に答える