Почему конструирование URL с записью mysql в PHP дает мне другую строку? - PullRequest
1 голос
/ 05 ноября 2010

Я пишу некоторый код для просмотра данных назначения PTO и обнаружил странную проблему, когда URL не работал, когда я генерировал его из своей записи в базе данных, но работал, когда я вводил ту же строку вручную. Когда я повторяю их, обе строки выглядят одинаково, но когда я приравниваю их, они разные. Есть ли какой-то скрытый символ или что-то в кодировке, которую я не вижу, и если да, то как мне это исправить? Я запускаю код с помощью WAMPSERVER.

$pto = "assignments.uspto.gov/assignments/q?db=pat&reel=";
$row = mysql_fetch_assoc($result);

$ReelFrame = $row['ReelFrame'];       // Should be "007358/0006" and looks to be correct.
$reelframearray = explode("/",$ReelFrame);
$gourla = $pto . $reelframearray[0] . "&frame=". $reelframearray[1];
$gourl = "assignments.uspto.gov/assignments/q?db=pat&reel=007358&frame=0006";
echo "$gourla <br>";
echo "$gourl <br>";
if ($gourl === $gourla){
 echo "same string";
} else {
 echo "different";
}

Вот как выглядят результаты:

assignments.uspto.gov/assignments/q?db=pat&reel=007358&frame=0006 
assignments.uspto.gov/assignments/q?db=pat&reel=007358&frame=0006 
different

Я сузил это до записи mysql с тех пор, как заменил это на:

$ReelFrame = "007358/0006";

Делает строки одинаковыми.

Спасибо за любую помощь. Столбец для ReelFrame - это VARCHAR, если это имеет значение.

Ответы [ 3 ]

2 голосов
/ 05 ноября 2010

, пожалуйста, попробуйте var_dump() обе ваши переменные, а не повторяйте их - может быть, есть некоторые начальные / конечные пробелы, разрывы строк или что-то в этом роде.

РЕДАКТИРОВАТЬ: просто как примечаниеВы действительно не должны сохранять несколько значений в одной базе данных.если ReelFrame состоит из двух значений, сделайте из него два столбца: Reel и Frame - и для этого не используйте charchar, похоже, что они должны быть целыми числами (и это не даст вам сохранить разрывы пробеловили что-то подобное случайно)

1 голос
/ 05 ноября 2010

Первая мысль, которая приходит мне в голову, это \ n характер.

Попробуйте это:

$ReelFrame = trim($row['ReelFrame']);
0 голосов
/ 05 ноября 2010

Я попробовал предложение (), но, похоже, оно не работает. Я не уверен, какой символ он вставляет, но, думаю, трим не удаляет его.

Я только что попробовал var_dump, и он показывает, что строки имеют разную длину, хотя ничто другое не выглядит иначе. vardump объекта ReelFrame по сравнению с ручной строкой:
string(20) "007358/0006"
string(11) "007358/0006"

аналогично для последней строки:
string(81) "assignments.uspto.gov/assignments/q?db=pat&reel=007358&frame=0006"
string(72) "assignments.uspto.gov/assignments/q?db=pat&reel=007358&frame=0006"

trim(), кажется, не имеет никакого значения для сущности, поэтому она все еще показывает 20. Есть ли какие-то другие невидимые символы, которые могут пропустить обрезки?

...