0

現在、そのままで問題なく機能するコードがあります。しかし、私が本当にやりたいのは、その部分を取り、<?php if strval ..?>節としてその部分に配置することです"SELECT * FROM projects"WHEREこれが可能かどうか、またはどうすればよいかわかりません。どんな考えも本当に大切です。これが理にかなっていることを願っています。

<?php 

//  ** User ID
$userid = $row_listelements ['id'];

// ** Projects
mysql_select_db($database_db, $db);
$query_activeusers = "SELECT * FROM projects ";
$activeusers = mysql_query($query_activeusers, $db) or die(mysql_error());
$row_activeusers = mysql_fetch_assoc($activeusers);
$totalRows_activeusers = mysql_num_rows($activeusers);

?>

<? do {?>

<?php if (!(strpos($row_activeusers['assignedto'], strval(",".$userid.",")) === false)) { ?>
<div><?=$row_activeusers['jobnumberdisplay'];?></div>
<?php } ?>

<? } while ($row_activeusers = mysql_fetch_assoc($activeusers)); ?>    

<strong><?php echo $totalRows_activeusers; ?></strong>
4

3 に答える 3

1

あなたのユーザーIDが一意の番号であり、あなたの質問を正しく理解している場合、次の方法でこれに到達できます。

INを使用 - 文字列と数値を処理できます (これを機能させるには、一意である必要があります):

$query_activeusers = "SELECT * FROM projects WHERE ".$userid." IN (assignedto)";

またはFIND_IN_SETを使用- 文字列を処理でき、数値は大文字と小文字が区別されます。

$query_activeusers = "SELECT * FROM projects WHERE FIND_IN_SET('".$userid."', assignedto)"

しかし、データベースの設計を検討する必要があると思います。このように区切られたリストに外部キーを含める際の問題は、外部キーの要点は、インデックスを使用して他のテーブルの情報をすばやく見つけることができるようにすることです。おっしゃるようにデータベースを実装すると、あらゆる種類の問題を解決する必要があります。

于 2013-01-29T07:02:06.027 に答える
0

よくわかりませんが、多分これはあなたを助けるでしょう。

if(strval ...)
{
   $where = "where field = $value";
}

これで、この$where変数を選択クエリで使用できます。if conditionが満足している場合にのみ実行されます。

于 2013-01-29T06:49:42.070 に答える
-1

私があなたのコードを正しく理解しているなら、あなたはSQLを使うべきですLIKE、すなわち:

$query_activeusers = "SELECT * FROM projects WHERE assignedto LIKE '%," . 
   ((int) $userid) . ",%'";

ここでの(int)へのキャストは、特別なSQL文字が含まれていないことを確認するために行われます$userid-整数である値の安価なSQLクォートのようなものです。strval文字列への連結はその数値を文字列に変換するため、実際に使用する必要はありません。

于 2013-01-29T06:51:22.493 に答える