PHP меняет значение моей переменной, потому что я связываю его как параметр mysqli? - PullRequest
1 голос
/ 02 марта 2010

я выслеживаю странную ошибку, когда переменная, которую я имею, менялась в какой-то момент, и вот где я нашел проблему:

echo "2. page is $page<br>";
$h = $page;
//Ok everything is done. Now need to update the view counter
$query = "UPDATE pages SET views=views+1 WHERE id=? LIMIT 1";
if($stmt = $db -> prepare($query))
{
    $stmt -> bind_param("i", $page);
    $stmt ->execute();
    $stmt ->close();
}
else
    dberror();
echo "3. page is $page<br>";
$page = $h;
echo "4. page is $page<br>";

Итак, я получаю это:

2. page is page
3. page is 0
4. page is page

Я просто добавил переменную $ h, чтобы попытаться исправить проблему, и она сработала. Так что по какой-то причине SQL-запрос уничтожает мою переменную страницы. Кто-нибудь знает, почему это произошло?

Ответы [ 2 ]

4 голосов
/ 02 марта 2010

Вы связали это как целое число: $stmt->bind_param("i", $page);, но на самом деле это была строка: "page".

bind_param связывает ссылку на фактическую переменную , а не ее копию, с оператором. Поэтому он должен изменить переменную, преобразовав ее в целое число, чтобы работать как связанный целочисленный параметр.

Целочисленное значение "page" (фактически любой строки, не содержащей цифр) равно 0, поэтому вы видите, что оно становится 0.

0 голосов
/ 02 марта 2010

$page передается по ссылке в bind_param("i", $page);, поэтому, как уже упоминалось, PHP преобразовал его в int, и поэтому он был уничтожен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...