Vale, por eso decia que el codigo cambiaria si almacenas mas de una url.
Entonces debes hacer un explode al campo de la url del usuario que solicita.
Por si desconoces la funcion, lo que hace es dividir la cadena entera del campo url en cada uno de los valores que hay almacenados, de acuerdo a un separador.
Vamos a suponer que en tu tabla, las url van separadas por una coma ','.
Cuando haces el SELECT del usuario, debes introducir tambien el campo de la url:
Código PHP:
$consulta = "SELECT bm_url, distinct(b2.username) FROM bookmark AS b1, bookmark AS b2 WHERE b1.username = '$username' AND b1.username != b2.username AND b1.bm_url = b2.bm_url";
Despues, vamos a introducir el explode:
Código PHP:
//Debajo de la consulta anterior
$result = ...
$row = mysql_fetch_assoc($result);
//Ahora el explode
$cadena = $row['bm_url'];
$cadena_array=explode(',',$cadena);
foreach($cadena_array as $llave => $valores)
//Despues lo metemos como condicionante en la consulta:
$consulta_uno = "SELECT bm_url FROM bookmark WHERE username = '$usuarios' AND bm_url != '$valores'";
Algo asi creo que podria ser.
Lo acabo de hacer en 3 minutos, seguramente exista algun fallo, es una idea.
Mira a ver mas o menos algo asi, lee sobre la funcion explode e intenta implementarlo a ver si te sirve.
Pero esa es la idea.
Si las url en vez de separadas por coma, van por espacio, por un guion o lo que sea, cambia aqui:
$cadena_array=explode(',',$cadena);
La coma por lo que sea si es un guion quedaria asi:
$cadena_array=explode('-',$cadena);