Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Запрос INSERT


Автор: Самозванка 17.9.2007, 10:55
Ранее работала только с запросом SELECT. Не могли бы вы объяснить почему не срабатывает запрос INSERT. БД Sybase
Код

<?php 
$dbname= $_COOKIE['dbname'];
$conn = odbc_connect( $dbname, "DBA", "SQL" );
$olga = "CREATE TABLE \"DBA\".\"OOO\" (\"stockname\" varchar(40) NULL, \"goodname\"  varchar(40) NULL,  \"model\"    varchar(40) NULL, \"datepart\" datetime null,  \"measureqty\"  varchar(20) NULL,\"qtyonstock\" double null, \"price\" double null)";
$result3 = odbc_exec( $conn,  $olga );
$result1 =  odbc_exec( $conn, "select * from birja" );
for ($j=0; $j<odbc_num_rows($result1); $j++)
{
$date = iconv('windows-1251', 'UTF-8', $r['datepart']);
$nd = substr($date, 0, strpos($date, " "));
$pr = iconv('windows-1251', 'UTF-8', $r['price']);
$pric = substr($pr, 0, strpos($pr,".")+3);
$qt = iconv('windows-1251', 'UTF-8', $r['qtyonstock']);
$qty = substr($qt, 0, strpos($qt,".")+3);
$stname = iconv('windows-1251', 'UTF-8', $r['stockname']);
$mode = iconv('windows-1251', 'UTF-8', $r['model']);
$meas = iconv('windows-1251', 'UTF-8', $r['measureqty']);
$sql4="INSERT INTO `OOO`  
               VALUES ('$stname',
              '$responce4',
              '$mode',
              '$nd',
              '$meas',
              '$qty',
              '$pric',
              )
      ";
$result4 = odbc_exec( $conn,  $sql4 );
}
?>


Я использую неправильный синтаксис?

Вот такие предупреждения появляются:
Код

Warning: odbc_exec() [function.odbc-exec]: SQL error: [Sybase][ODBC Driver][Adaptive Server Anywhere]Table or view already exists: Item 'OOO' already exists, SQL state S0001 in SQLExecDirect in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\TABLE_TREE\table.php on line 18
Склад Наименование Модель Дата прихода Единица измерения Количество Цена 
Склад Миллиметровка 50х70 см AG50X70 2006-06-05 лист 1 1181.21 
Warning: odbc_exec() [function.odbc-exec]: SQL error: [Sybase][ODBC Driver][Adaptive Server Anywhere]Syntax error or access violation: near '`' in INTO [`]OOO` ..., SQL state 37000 in SQLExecDirect in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\TABLE_TREE\table.php on line 52 


Почему таблица создается, но поля не заполняются?

Автор: Leoo 17.9.2007, 11:25
Попробуй указать поля которые хочешь заполнить
Код

INSERT INTO table (field1, field2, field3) VALUES('fjdkf', 'dwsds', 'kljlkjkl')

Автор: Самозванка 17.9.2007, 11:27
Leoo, 

Спасибо, уже и так попробовала. Не катит. Такое предупреждение:

Код

Warning: odbc_exec() [function.odbc-exec]: SQL error: [Sybase][ODBC Driver][Adaptive Server Anywhere]Table or view already exists: Item 'OOO' already exists, SQL state S0001 in SQLExecDirect in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\TABLE_TREE\table.php on line 18
Warning: odbc_exec() [function.odbc-exec]: SQL error: [Sybase][ODBC Driver]Syntax error or access violation, SQL state 42000 in SQLExecDirect in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\TABLE_TREE\table.php on line 44 



Автор: SelenIT 17.9.2007, 11:42
Самозванка, может, сайбэйзу INTO не нужен (судя по http://www.selectorweb.com/sql_sybase.html)? И обратные майэскюэльные кавычки меня тоже смущают...

Автор: Самозванка 17.9.2007, 11:47
Спасибо, с этим вопросом разобралась. НЕ надо название таблицы было брать в кавычке.
то есть так:

Код

$sql6="INSERT INTO OOO (stockname, goodname, model, datepart, measureqty, qtyonstock, price) VALUES ('$stname', '$responce4', '$mode' , '$nd', '$meas', '$qty', '$pric') ";


Но у меня возникла следом еще 2 вопроса, я же загружаю эту таблицу с помощью AJAx, и в итоге пробелмы с кодировками, у меня русский шрифт в таблице после запроса отображается иероглифами. 

И еще есть ли какой нить такой вариант запроса, чтобы очистить всю таблицу??? и какой у него синтаксис если есть?

Автор: console 17.9.2007, 11:54
в MySQL это TRUNCATE... в Sybase может тоже подобное

Автор: Самозванка 17.9.2007, 12:16
Спасибо, удалила С помощью DROP.

Но почему русский шрифт отображается так:
Код

Чехлы х/б 70 мм


Привожу весь код файла, который возвращается с помощью AJAX:
Код

<?php 
$id=$_GET["id"];
$dbname= $_COOKIE['dbname'];
$responce = iconv('windows-1251', 'UTF-8', $_GET["id"]);
$conn = odbc_connect( $dbname, "DBA", "SQL" );
$result = odbc_exec( $conn, "exec ipr_birja" );
$result1 =  odbc_exec( $conn, "select * from ipr_birja" );
$sql1="DROP TABLE OOO" ;
$re = odbc_exec( $conn, $sql1);
$olga = "CREATE TABLE \"DBA\".\"OOO\" (\"stockname\" varchar(40) NULL, \"goodname\"  varchar(40) NULL,  \"model\"    varchar(40) NULL, \"datepart\" datetime null,  \"measureqty\"  varchar(20) NULL,\"qtyonstock\" double null, \"price\" double null)";
$result3 = odbc_exec( $conn,  $olga );
echo "<table border = 1 width=100%>";
$shapka =  "<tr><td>Склад</td><td>Наименование</td><td>Модель</td><td>Дата прихода</td><td>Единица измерения</td><td>Количество</td><td>Цена</td></tr>";
$responce3 = iconv('windows-1251', 'UTF-8', $shapka);
echo $responce3;
for ($j=0; $j<odbc_num_rows($result1); $j++)
{
$r=odbc_fetch_array($result1);
$responce2 = iconv('windows-1251', 'UTF-8', $r["goodclassid"]);
$responce4 = iconv('windows-1251', 'UTF-8', $r["goodname"]);
$pos=strpos($responce2,$responce);
if ($pos !==false)
{
echo "<tr>";
$date = iconv('windows-1251', 'UTF-8', $r['datepart']);
$nd = substr($date, 0, strpos($date, " "));
$pr = iconv('windows-1251', 'UTF-8', $r['price']);
$pric = substr($pr, 0, strpos($pr,".")+3);
$qt = iconv('windows-1251', 'UTF-8', $r['qtyonstock']);
$qty = substr($qt, 0, strpos($qt,".")+3);
$stname = iconv('windows-1251', 'UTF-8', $r['stockname']);
$mode = iconv('windows-1251', 'UTF-8', $r['model']);
$meas = iconv('windows-1251', 'UTF-8', $r['measureqty']);
echo "<td>",$stname,"</td><td>",$responce4,"</td><td>",$mode,"</td><td>",$nd,"</td><td>",$meas,"</td><td>",$qty,"</td><td>",$pric,"</td>";
$sql6="INSERT INTO OOO (stockname, goodname, model, datepart, measureqty, qtyonstock, price) VALUES ('$stname', '$responce4', '$mode' , '$nd', '$meas', '$qty', '$pric') ";
$result4 = odbc_exec( $conn,  $sql6);
echo "</tr>";
}
}
echo "</table>";
?>

Автор: ewolf 17.9.2007, 19:18
Вы уверены, что данные скрипту передаются в юникоде?

Автор: Самозванка 18.9.2007, 09:00
ewolf, да, уверена, но я уже решила эту проблему, в базу тоже в юникоде надо было передавать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)