Скрипт голосования за фото

barabula

Гуру форума
Регистрация
21 Май 2009
Сообщения
474
Реакции
80
Не пойму в чём ошибка, подскажите кто шарит плизз:

Код:
Warning: implode() [function.implode]: Invalid arguments passed in /home/***/domains/***/public_html/test1/install_images.php on line 17
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

Вот что входит в файл install_images.php
PHP:
<?php

include('mysql.php');

if ($handle = opendir('images')) {

	/* This is the correct way to loop over the directory. */
	while (false !== ($file = readdir($handle))) {
		if($file!='.' && $file!='..') {
			$images[] = "('".$file."')";
		}
	}

	closedir($handle);
}

$query = "INSERT INTO images (filename) VALUES ".implode(',', $images)." ";
if (!mysql_query($query)) {
	print mysql_error();
}
else {
	print "finished installing your images!";
}


?>


Вот какая таблица находится в базе:
Код:
CREATE TABLE IF NOT EXISTS `images` (
			`image_id` bigint(20) unsigned NOT NULL auto_increment,
			`filename` varchar(255) NOT NULL,
			`score` int(10) unsigned NOT NULL default '1500',
			`wins` int(10) unsigned NOT NULL default '0',
			`losses` int(10) unsigned NOT NULL default '0',
			PRIMARY KEY  (`image_id`)
		) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Ну и конечно же там где идёт инклуд к БД, все данные введены верно.
 
а вы попробуйте перед запросом ($query = ...)
поставить сначала
PHP:
print ".implode(',', $images).";
а затем
PHP:
print implode(',', $images);
и сами увидите...
 
У вас не выполняется условие $handle = opendir('images'), а т.к. до этого $images нигде объявлена не была, в частности пустым массивом, соответственно функция implode не может принять ее. Дорабатываем
PHP:
<?php
require_once 'mysql.php';

$images = array();

if ( $handle = opendir('images') ) {
	while ( false !== ( $file = readdir( $handle ) ) ) {
		if ( is_file( $file ) ) {
			$images[] = $file;
		}
	}
	closedir( $handle );
}

if ( sizeof( $images ) ) {
	$sql = "INSERT INTO images (filename) VALUES (".implode( '),(', $images ).")";
	if ( !mysql_query( $sql ) ) {
		echo 'Error occured while loading images data.<br />'.mysql_error();
		exit;
	}
}

echo 'Loading images data complete.';
 
У вас не выполняется условие $handle = opendir('images'), а т.к. до этого $images нигде объявлена не была, в частности пустым массивом, соответственно функция implode не может принять ее. Дорабатываем
PHP:
<?php
require_once 'mysql.php';
$images = array();
if ( $handle = opendir('images') ) {
	while ( false !== ( $file = readdir( $handle ) ) ) {
		if ( is_file( $file ) ) {
			$images[] = $file;
		}
	}
	closedir( $handle );
}
if ( sizeof( $images ) ) {
	$sql = "INSERT INTO images (filename) VALUES (".implode( '),(', $images ).")";
	if ( !mysql_query( $sql ) ) {
		echo 'Error occured while loading images data.<br />'.mysql_error();
		exit;
	}
}
echo 'Loading images data complete.';
Помогло, осталась теперь только вот эта ошибка:
Warning: opendir(images) [function.opendir]: failed to open dir: No such file or directory in /home/***/domains/***/public_html/test1/install_images.php on line 6
не подскажешь, почему оно не видит директорию? БД создана...
 
Помогло, осталась теперь только вот эта ошибка:
Warning: opendir(images) [function.opendir]: failed to open dir: No such file or directory in /homedomainspublic_html/test1/install_images.php on line 6
не подскажешь, почему оно не видит директорию? БД создана...

Права доступа проверьте.
 
не на файле , а на папку
 
Назад
Сверху