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();
/* 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 написал(а):
Что за вопрос? Что за запрос?
LIMIT означает, что нужно вывести только некоторые строки из запроса. Т.е. цифры 0,5 говорят - вывести первые 5 строк. Как должен понимать по-твоему SQL-сервер этот запрос с вопросами? С чего бы не было ошибки?
Цитата
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]
Что за вопрос? Что за запрос?
LIMIT означает, что нужно вывести только некоторые строки из запроса. Т.е. цифры 0,5 говорят - вывести первые 5 строк. Как должен понимать по-твоему SQL-сервер этот запрос с вопросами? С чего бы не было ошибки?
Цитата
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]
Что за вопрос? Что за запрос?
LIMIT означает, что нужно вывести только некоторые строки из запроса. Т.е. цифры 0,5 говорят - вывести первые 5 строк. Как должен понимать по-твоему SQL-сервер этот запрос с вопросами? С чего бы не было ошибки?
Цитата
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 чтож... похоже что ты прав...