Jump to content

[SOLVED] makes no sense..


Michdd

Recommended Posts

I have a simple query and I'm trying to check to see if a board already exists with the same name or abbreviation, excluding the current board.

 

$result = mysql_query("SELECT * FROM `boards` WHERE name!='$board' AND abb='$abb' OR name='$newBoardName'");
	$row = mysql_fetch_assoc($result);
	if(!mysql_num_rows($result))
                {
                      
                 }
                 else
                 {
                      echo $board . '-' . $row['name'];
                 }

 

How is it possible that $board is the same as $row['name'] when that's clearly excluded in my query?

Link to comment
https://forums.phpfreaks.com/topic/165725-solved-makes-no-sense/
Share on other sites

I think your query is wrong.

 

There is 2 ways of doing it...I think.

 

mysql_query("SELECT * FROM `boards` WHERE name!='{$board}' AND abb='{$abb}' OR name='{$newBoardName}'");

 

or

 

mysql_query("SELECT * FROM `boards` WHERE name!='".$board."' AND abb='".$abb."' OR name='".$newBoardName."'");

To clarify my post above, it looks like you expect your query to be executed like this:

 

SELECT * FROM `boards` WHERE name!='$board' AND (abb='$abb' OR name='$newBoardName')

 

But that's not the case. It'll be executed like this:

 

SELECT * FROM `boards` WHERE (name!='$board' AND abb='$abb') OR name='$newBoardName'

 

Because:

AND has higher precedence than OR.

 

Which is why it's possible that $row['name'] == $board in your result set.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.