Forum Webscript.Ru

Программирование => Perl => Тема начата: Timofey от 03 Мая 2001, 11:06:44

Название: SQl запрос в базу MySQL
Отправлено: Timofey от 03 Мая 2001, 11:06:44
pole1 pole2
                           q 1
                           w 2
                           e 3
                           r 4

                           как узнать какой букве какая цифра соответствует

                           use DBI;

                           $dbdriver = "mysql";

                           $hostname = "localhost";
                           $port = "3306";
                           $username = "qqqq";
                           $passwordb = "qqqq";
                           $basename = "Worktime";
                           $tablename = "www";
                           print "Content-type: text/html

";
                           $dbh =
                           DBI->connect("dbi:$dbdriver:$basename:$hostname:$port","$username","$passwordb");

                           $sqlstatement = "SELECT pole1,pole2 FROM $tablename" WHERE pole1=\'w\';
                           $sth = $dbh->prepare($sqlstatement);
                           $sth->execute || die "Невозможно выполнить SQL-запрос.";
                           while (@row=$sth->fetchrow_array) {print @row
;}

                           print "
";

                           при таком запросе не работает,хотя другие запросы работают,типа $sqlstatement =
                           "SELECT pole1,pole2 FROM $tablename"; и т.д. в чем беда?
Название: SQl запрос в базу MySQL
Отправлено: Chs от 03 Мая 2001, 16:03:08
Цитировать
Timofey (03-05-2001 11:06):
                           $sqlstatement = "SELECT pole1,pole2 FROM $tablename" WHERE pole1=\'w\';
                           $sth = $dbh->prepare($sqlstatement);
С кавычками поаккуратнее.:))
$sqlstatement = "SELECT pole1,pole2 FROM $tablename WHERE pole1=?";
$sth = $dbh->prepare($sqlstatement);
$sth -> execute(\'w\');
Далее по тексту.:))
Название: SQl запрос в базу MySQL
Отправлено: vlad от 03 Мая 2001, 16:03:25
Цитировать
Timofey (03-05-2001 11:06):
pole1 pole2
                           q 1
                           w 2
                           e 3
                           r 4

                           как узнать какой букве какая цифра соответствует

                           use DBI;

                           $dbdriver = "mysql";

                           $hostname = "localhost";
                           $port = "3306";
                           $username = "qqqq";
                           $passwordb = "qqqq";
                           $basename = "Worktime";
                           $tablename = "www";
                           print "Content-type: text/html

";
                           $dbh =
                           DBI->connect("dbi:$dbdriver:$basename:$hostname:$port","$username","$passwordb");

                           $sqlstatement = "SELECT pole1,pole2 FROM $tablename" WHERE pole1=\'w\';
                           $sth = $dbh->prepare($sqlstatement);
                           $sth->execute || die "Невозможно выполнить SQL-запрос.";
                           while (@row=$sth->fetchrow_array) {print @row
;}

                           print "
";

                           при таком запросе не работает,хотя другие запросы работают,типа $sqlstatement =
                           "SELECT pole1,pole2 FROM $tablename"; и т.д. в чем беда?

A куда ты вставил выражение Where. ?

должно быть :

$sqlstatement = "SELECT pole1,pole2 FROM $tablename  WHERE pole1=\'w\'";

Для справки скачай мою книгу по SQL, PL/SQL ( справочник ) :
  http://www.deltacom.co.il/rus/document/oracle_ref.htm
Название: SQl запрос в базу MySQL
Отправлено: cj от 04 Мая 2001, 09:20:01
Цитировать
vlad (03-05-2001 16:03):
Цитировать
Timofey (03-05-2001 11:06):
pole1 pole2
                           q 1
                           w 2
                           e 3
                           r 4

                           как узнать какой букве какая цифра соответствует

                           use DBI;

                           $dbdriver = "mysql";

                           $hostname = "localhost";
                           $port = "3306";
                           $username = "qqqq";
                           $passwordb = "qqqq";
                           $basename = "Worktime";
                           $tablename = "www";
                           print "Content-type: text/html

";
                           $dbh =
                           DBI->connect("dbi:$dbdriver:$basename:$hostname:$port","$username","$passwordb");

                           $sqlstatement = "SELECT pole1,pole2 FROM $tablename" WHERE pole1=\'w\';
                           $sth = $dbh->prepare($sqlstatement);
                           $sth->execute || die "Невозможно выполнить SQL-запрос.";
                           while (@row=$sth->fetchrow_array) {print @row
;}

                           print "
";

                           при таком запросе не работает,хотя другие запросы работают,типа $sqlstatement =
                           "SELECT pole1,pole2 FROM $tablename"; и т.д. в чем беда?

A куда ты вставил выражение Where. ?

должно быть :

$sqlstatement = "SELECT pole1,pole2 FROM $tablename  WHERE pole1=\'w\'";

Для справки скачай мою книгу по SQL, PL/SQL ( справочник ) :
  http://www.deltacom.co.il/rus/document/oracle_ref.htm

Извини за выражение, но ты ламернул :-)
Это называется прибиндить параметр.

2Chs: это делается так
$sth->bind_param(1, \'w\');
$sth->execute();

:-)
Название: SQl запрос в базу MySQL
Отправлено: Chs от 04 Мая 2001, 21:06:45
Цитировать
cj (04-05-2001 09:20):

Извини за выражение, но ты ламернул :-)
Это называется прибиндить параметр.

2Chs: это делается так
$sth->bind_param(1, \'w\');
$sth->execute();

:-)
Это не я ламернул, а ты лажанулся.:)
Доки надо внимательнее читать, и по execute в частности.
If any arguments are given, then execute will effectively call
bind_param for each value before executing the statement.
Values bound in this way are usually treated as SQL_VARCHAR types
unless the driver can determine the correct type (which is rare), or unless
bind_param (or bind_param_inout) has already been used to specify the type.

P.S.: Не наезжай если не уверен.:)
Название: SQl запрос в базу MySQL
Отправлено: cj от 05 Мая 2001, 09:16:56
Цитировать
Chs (04-05-2001 21:30):
Цитировать
cj (04-05-2001 09:20):

Извини за выражение, но ты ламернул :-)
Это называется прибиндить параметр.

2Chs: это делается так
$sth->bind_param(1, \'w\');
$sth->execute();

:-)
Это не я ламернул, а ты лажанулся.:)
Доки надо внимательнее читать, и по execute в частности.

Нет, это ты лажанулся :-) Хотя бы потому, что я не тебе отвечал. :-)

Цитировать
If any arguments are given, then execute will effectively call
bind_param for each value before executing the statement.
Values bound in this way are usually treated as SQL_VARCHAR types
unless the driver can determine the correct type (which is rare), or unless
bind_param (or bind_param_inout) has already been used to specify the type.

P.S.: Не наезжай если не уверен.:)

Верно. Но я точно знаю, что есть версии DBI, который впадают в прострацию при наличии доп. аргументов. :-)
Название: SQl запрос в базу MySQL
Отправлено: Chs от 05 Мая 2001, 14:45:22
Цитировать
cj (05-05-2001 09:16):
Верно. Но я точно знаю, что есть версии DBI, который впадают в прострацию при наличии доп. аргументов. :-)
Приводи версии - отвечать надо агрументированно.:))
Название: SQl запрос в базу MySQL
Отправлено: vlad от 06 Мая 2001, 10:28:41
Цитировать
Chs (04-05-2001 21:30):
Цитировать
cj (04-05-2001 09:20):

Извини за выражение, но ты ламернул :-)
Это называется прибиндить параметр.

2Chs: это делается так
$sth->bind_param(1, \'w\');
$sth->execute();


То, что ты написал в динамик-SQL не вписывается ни какой стороной, так что не выступай. B выражении SQL нет параметра "?" ( знак вопрос )
Так что ты "прибиндиваеш" параметр на весу?

Cлушать надо ухом а не брюхом или говорить надо то, что думаеш, a если не думаеш - то не говори.
Название: SQl запрос в базу MySQL
Отправлено: cj от 06 Мая 2001, 10:47:16
Цитировать
Chs (05-05-2001 14:45):
Цитировать
cj (05-05-2001 09:16):
Верно. Но я точно знаю, что есть версии DBI, который впадают в прострацию при наличии доп. аргументов. :-)
Приводи версии - отвечать надо агрументированно.:))

Отмазон гнилой, но - не помню. Просто однажды наступив на грабли, я стараюсь больше так не делать.
Название: SQl запрос в базу MySQL
Отправлено: cj от 06 Мая 2001, 10:51:24
Цитировать
vlad (06-05-2001 10:28):
Цитировать
Chs (04-05-2001 21:30):
Цитировать
cj (04-05-2001 09:20):

Извини за выражение, но ты ламернул :-)
Это называется прибиндить параметр.

2Chs: это делается так
$sth->bind_param(1, \'w\');
$sth->execute();


То, что ты написал в динамик-SQL не вписывается ни какой стороной, так что не выступай. B выражении SQL нет параметра "?" ( знак вопрос )
Так что ты "прибиндиваеш" параметр на весу?

Cлушать надо ухом а не брюхом или говорить надо то, что думаеш, a если не думаеш - то не говори.

Смотри от сознания собственной полноценности не лопни. А заодно почитай что-нить о парсинге SQL запросов и о кэшировании оных.
Название: SQl запрос в базу MySQL
Отправлено: vlad от 06 Мая 2001, 11:04:34
Цитировать
cj (06-05-2001 10:51):
Цитировать
vlad (06-05-2001 10:28):
Цитировать
Chs (04-05-2001 21:30):
Цитировать
cj (04-05-2001 09:20):

Извини за выражение, но ты ламернул :-)
Это называется прибиндить параметр.

2Chs: это делается так
$sth->bind_param(1, \'w\');
$sth->execute();


То, что ты написал в динамик-SQL не вписывается ни какой стороной, так что не выступай. B выражении SQL нет параметра "?" ( знак вопрос )
Так что ты "прибиндиваеш" параметр на весу?

Cлушать надо ухом а не брюхом или говорить надо то, что думаеш, a если не думаеш - то не говори.

Смотри от сознания собственной полноценности не лопни. А заодно почитай что-нить о парсинге SQL запросов и о кэшировании оных.


Что, из области - "сам дурак"
Для справки скачай мою книгу по SQL, PL/SQL ( справочник ) :
http://www.deltacom.co.il/rus/document/oracle_ref.htm

Так в чем ошибка ?
Название: SQl запрос в базу MySQL
Отправлено: Chs от 06 Мая 2001, 21:00:51
Цитировать
cj (06-05-2001 10:47):

Отмазон гнилой, но - не помню. Просто однажды наступив на грабли, я стараюсь больше так не делать.
Точно, гнилой - execute с параметрами появился в версии DBI 0.86 вместе с bind_param, а DBI в то время был еще "альфа". :))
Название: SQl запрос в базу MySQL
Отправлено: cj от 07 Мая 2001, 06:51:16
Цитировать
vlad (06-05-2001 11:04):

Что, из области - "сам дурак"
Для справки скачай мою книгу по SQL, PL/SQL ( справочник ) :
http://www.deltacom.co.il/rus/document/oracle_ref.htm

Так в чем ошибка ?

Чья? Ты может хочешь убедить меня, что написанная мной или Chs конструкция ошибочна? Или что?
Название: SQl запрос в базу MySQL
Отправлено: Timofey от 07 Мая 2001, 15:31:21
Народ, всем спасибо за помощь, моя ошибка была в занесении в базу, поэтому запрос и не работал, сейчас все нормально работает

$sqlstatement = "SELECT  pole2 FROM $tablename WHERE pole1=\'$usvd\'";
$sth = $dbh->prepare($sqlstatement);
$sth->execute || die "SQL-error.";