str_replace - PullRequest
       12

str_replace

1 голос
/ 29 июня 2009
$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.');

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

Обновление:

$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');

Ответы [ 2 ]

4 голосов
/ 29 июня 2009

Другой способ:

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

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

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

1 голос
/ 29 июня 2009

(3, 'тестовый тестовый тестовый тест');
Либо сохраняйте метки со знаками вместо пробелов, (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.');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...