-3

次のように、PHPスクリプトは問題なく動作します。

while($row4 = mysql_fetch_array($result4))
{
if (($row4['Username'] != 'root') && ($row4['ToUpline'] == 1)){
if (!(($row4['Username'] != $MyUsername) && ($row4['Private'] == 1))){

//some other scripts here...

}};

一方、MySQLコマンドにはすでにWHERE条件があります:

WHERE (NetworkTree.LeftNum <= $MyLeftNum AND NetworkTree.RightNum >= $MyRightNum) 
AND MyBlackList.HideWho IS NULL

これらのPHP条件を1つのSQLコマンドに組み合わせて、PHPIFを削除する方法。ありがとう...

4

2 に答える 2

3
WHERE
  NetworkTree.LeftNum <= $MyLeftNum AND
  NetworkTree.RightNum >= $MyRightNum AND
  MyBlackList.HideWho IS NULL AND
  Username <> 'root' AND
  ToUpline = 1 AND
  NOT(Username <> 'myUsername' AND
      Private = 1)

上記の入力方法'myUsername'は、クエリの実行方法によって異なります。古いmysql_*関数を使用しているため、プリペアドステートメントは使用できませんが、文字列連結またはsprintfを使用できます( mysql_real_escape_stringを使用してエスケープすることを忘れないでください!)。sprintfでそれを行う方法は次のとおりです。

$query = sprintf("SELECT ... WHERE ... NOT(Username <> '%s' ...)",
                 mysql_real_escape_string($username));
于 2012-06-20T05:53:34.653 に答える
0
WHERE (NetworkTree.LeftNum <= $MyLeftNum AND NetworkTree.RightNum >= $MyRightNum) AND MyBlackList.HideWho IS NULL AND Username != 'root' AND ToUpLine = 1 AND NOT (Username != '$MyUsername' AND Private = 1)
于 2012-06-20T05:53:23.147 に答える