Простой скрипт на PHP для MySql (Сложность)

S
На сайте с 19.11.2010
Offline
0
564

Добрый день. Не могу понять ошибки в скрипте. Посмотрите пожалуйста

<?php

$dbhost = 'localhost';

$dbusername = 'Magaz';

$dbuserpassword = '1234';

$default_dbname = 'Magaz';

$MYSQL_ERRNO = '';$MYSQL_ERROR ='';

$t=array("Кофе молотый",12.5,"Россия",

"Чай в пакетиках",14.22,"Англия",

"Какао порошок",10.75,"Беларусь");

$linkid = db_connect();if(!$linkid){sql_error();}

$query = "create table tovar (id int unsigned not null

auto_increment,name tovar char(100) not null,price int not

null,zavod char(100) not null,PRIMARY KEY (id),INDEX

(name_tovar))";

if (!mysql_query($query)){sql_error();mysql_close($linkid);exit;} /// Ругается Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource

$i=0;while($i<sizeof($t)) {

$query = "insert 10 to tovar (name_tovar, price, zavod) values ('{$t[$i]}, {$t[$i+1]}, '{$t[$i+2]}')";

if (!mysql_query($query)){sql_error();mysql_close($linkid);exit;}

$i+=3;}

echo "Done";

#Закрываем базу

mysql_close($linkid);exit;

#Function

function db_connect(){global $dbhost, $dbusername,

$dbuserpassword, $default_dbname,$MYSQL_ERRNO,$MYSQL_ERROR;

$link = @mysql_connect($dbhost, $dbusername, $dbuserpassword);

if($link && @mysql_select_db ($default_dbname)){return $link;}

$MYSQL_ERRNO = mysql_errno ();

$MYSQL_ERROR = mysql_error ();

return false;}

function db_close($link) {return mysql_close($link);}

function sql_error() {

global $MYSQL_ERRNO, $MYSQL_ERROR;

if(empty($MYSQL_ERROR)) {

$MYSQL_ERRNO = mysql_errno();

$MYSQL_ERROR = mysql_error();

}

return "$MYSQL_ERRNO; $MYSQL_ERROR";

juniorspecialistphp
На сайте с 08.08.2010
Offline
25
#1
Пишу скрипты любой сложности на РНР. (http://elagin.su)
WT
На сайте с 08.10.2010
Offline
17
#2

1. Для создания таблицы лучше используйте след. код:

create table tovar (
`id` int unsigned not null auto_increment,
`name_tovar` char(100) not null,
`price` int not null,
`zavod` char(100) not null,
PRIMARY KEY (id),
INDEX (`name_tovar`)
)

Отличие от Вашего:

- у вас поле "name tovar" идет без подчеркивания(не буду утверждать, что так нельзя, честно говоря не помню;) ), а первичный ключ - с подчеркиванием

- имена полей БД лучше обрамляйте знаками ` (кнопка над табом, левее 1)

2. У Вас одно подключение к БД, поэтому, чтобы не возникало ненужных проблем используйте

mysql_close()

без аргументов

3. Заходя немного вперед (кстати, ошибка, которую заметил даже раньше Вашего комментария)

insert 10 to tovar (name_tovar, price, zavod) values ('{$t[$i]}, {$t[$i+1]}, '{$t[$i+2]}')

в корне не правильно:

- "insert 10 to tovar" - откуда Вы такое взяли?

- переменная {$t[$i]} обрамлена одинарной кавычкой только с одной стороны

- у Вас в таблице поле "price" типа int, а Вы пытаетесь запихнуть в него 12.5, 14.22 и 10.75 (а это тип "float"), поэтому в лучшем случае у Вас в БД попадут значения 12,14 и 10

Итого, резюмируя:

- для создания БД используйте SQL-запрос:

create table tovar (
`id` int unsigned not null auto_increment,
`name_tovar` char(100) not null,
`price` float not null,
`zavod` char(100) not null,
PRIMARY KEY (id),
INDEX (`name_tovar`)
)

а для добавления:

insert tovar (`name_tovar`, `price`, `zavod`) values ('{$t[$i]}', {$t[$i+1]}, '{$t[$i+2]}')

Как-то вот так)

За еду не работаю, зарабатываю здесь (http://www.sape.ru/r.amStvLXttk.php) Работа для ленивых - продвигай сайты автоматически (http://seopult.ru/ref.php?ref=1f6f897913cc593f)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий