2009-06-28 2 views
1
$tag = mysql_real_escape_string($_GET['tag']); 
$tag = str_replace("-", " ", $_GET['tag']); 

$query = mysql_query("SELECT * FROM tags WHERE name = '$tag'"); 
$row = mysql_fetch_assoc($query); 

if (!mysql_num_rows($query)) exit('That tag dont exist.'); 

У меня есть тег с пробелами в его имени, как мне сделать, чтобы заменить пробелы дефисом? Я думаю, что приведенный выше код должен работать, но оно не:/str_replace

Обновление:

$tag = str_replace(' ', '-', $_GET['tag']); 
$tag = mysql_real_escape_string($tag); 

$query = mysql_query("SELECT * FROM tags WHERE name = '$tag'"); 
$row = mysql_fetch_assoc($query); 

if (!mysql_num_rows($query)) exit('That tag dont exist'); 

Db теги

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`name` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL 



INSERT INTO `tags` (`id`, `name`) VALUES 
(1, 'test'), 
(2, 'test test'), 
(3, 'test test test test'); 

ответ

1

(3, 'test test test test');
Либо хранить теги с подменю вместо пробелов, (3, 'test-test-test-test')
или храните и запросите их пробелами.
 
$tag = mysql_real_escape_string($_GET['tag']); 
$query = "SELECT * FROM tags WHERE name = '$tag'"; 
$result = mysql_query($query) or die(mysql_error()); 
if (false===($row=mysql_fetch_assoc($result))) exit('No such tag.'); 

4

Другой путь вокруг:

$tag = str_replace(' ', '-', $_GET['tag']); 
$tag = mysql_real_escape_string($tag); 

(Когда вы увидите str_replace(A, B, C), подумайте «замените A на B в C»)

(Кроме того, избегать строки должно случиться после все остальное. И вы случайно использовали $_GET['tag'] вместо $tag ваш второй раз.)

+0

спасибо, что хорошо выглядит, но им грустно сказать, что он все еще не работает;/weird – 2009-06-28 21:00:16

+0

@Remy вы можете обновить свой вопрос с помощью обновленного кода? –

+0

Я обновил его сейчас – 2009-06-28 21:08:10