[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: фокусы mysqli_stmt_prepare
set_rus
PHP5 скомпилированный с модулем mysqli
MySQL v4.1

пока колупал чтобы понять че к чему, упростил код что называется дальше некуда
проблема следующая:
по разному записываю $stmt->prepare() и $stmt->bind_param (далее в Листинге)

Вариант 1 не работает... говорит You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?,?' at line 1.

Вариант 2 работает на ура
посмотрите плз где я ошибся...

Код
$mysqli = new mysqli("localhost", "usr", "pass", "table");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$city = "show";
$start = 0;
$on_page =5;

/* create a prepared statement */
$stmt =  $mysqli->stmt_init();

//Вариант 1 - не работает
//говорит: You have an error in your SQL syntax;
//              check the manual that corresponds to your MySQL server version for the right syntax to use near '?,?' at line 1.
//if ($stmt->prepare("select name from gbook where hide=? limit ? , ? ")) {
//    $stmt->bind_param("sii", $city,$start,$on_page);

//Вариант 2 - работает
if ($stmt->prepare("select name from gbook where hide=? limit 0 , 5 ")) {
    $stmt->bind_param("s", $city);

    /* execute query */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($name);

    /* fetch value */
    $stmt->fetch();

    printf("{%s}\n", $name);

    /* close statement */
    $stmt->close();
}else{
    printf("Error: %s.\n", $stmt->error);

}

/* close connection */
$mysqli->close();

хотелось бы понять почему Вариант 1 не проходит... может проблема в версиях софта...? если похоже на то - скажите у кого работает?



Спустя 1 час, 22 минуты, 11 секунд (16.02.2008 - 20:10) Sylex написал(а):
Что за вопрос? Что за запрос?
Цитата
select name from gbook where hide=? limit ? , ?


LIMIT означает, что нужно вывести только некоторые строки из запроса. Т.е. цифры 0,5 говорят - вывести первые 5 строк. Как должен понимать по-твоему SQL-сервер этот запрос с вопросами? С чего бы не было ошибки?

Спустя 7 минут, 49 секунд (16.02.2008 - 20:18) set_rus написал(а):
Цитата(Sylex @ 16.2.2008, 23:10) [snapback]33826[/snapback]
Что за вопрос? Что за запрос?
Цитата
select name from gbook where hide=? limit ? , ?


LIMIT означает, что нужно вывести только некоторые строки из запроса. Т.е. цифры 0,5 говорят - вывести первые 5 строк. Как должен понимать по-твоему SQL-сервер этот запрос с вопросами? С чего бы не было ошибки?


я в курсе... про mysqli_stmt_prepare в мануале почитай...
почему по твоему "select name from gbook where hide=? limit 0 , 5" работает?

Спустя 45 минут, 47 секунд (16.02.2008 - 21:04) Sylex написал(а):
Цитата(set_rus @ 16.2.2008, 23:18) [snapback]33828[/snapback]
Цитата(Sylex @ 16.2.2008, 23:10) [snapback]33826[/snapback]
Что за вопрос? Что за запрос?
Цитата
select name from gbook where hide=? limit ? , ?


LIMIT означает, что нужно вывести только некоторые строки из запроса. Т.е. цифры 0,5 говорят - вывести первые 5 строк. Как должен понимать по-твоему SQL-сервер этот запрос с вопросами? С чего бы не было ошибки?


я в курсе... про mysqli_stmt_prepare в мануале почитай...
почему по твоему "select name from gbook where hide=? limit 0 , 5" работает?


Потому что "hide" - поле, а цифры после LIMIT - параметры оператора

Спустя 17 минут, 44 секунды (16.02.2008 - 21:21) set_rus написал(а):
to Sylex чтож... похоже что ты прав...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.