Jump to content

PHP & MYSQL


Recommended Posts

This code is not working. Why?

 

<?php



include('mysql.php');

$con = mysql_connect("$host", "$user", "$password");

$sql1 = 'CREATE DATABASE IF NOT EXISTS `' . $database . '`';

$sql2 = 'CREATE TABLE IF NOT EXISTS `battles` (
	`battle_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
	`winner` bigint(20) unsigned NOT NULL,
	`loser` bigint(20) unsigned NOT NULL,
)';

$sql3 = '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',
)';


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

while (false !== ($file = readdir($handle))) {

	if($file!='.' && $file!='..') {

		$images[] = "('".$file."')";

	}

}



closedir($handle);

}



$sql4 = "INSERT INTO images (filename) VALUES ".implode(',', $images)." ";


mysql_query($sql1, $sql2, $sql3, $sql4, $con);

mysql_close();

header('location: /');





?>

 

I would like to "clean" the tables if exist, how can i do this?

Link to comment
https://forums.phpfreaks.com/topic/243030-php-mysql/
Share on other sites

mysql_query($sql1, $sql2, $sql3, $sql4, $con);

 

mysql_query accepts 2 parameters. The first is the SQl to be executed and the second is the connection. You cannot pass it 4 SQL statements like that. You will need to execute each one independently.

 

mysql_query($sql1);
mysql_query($sql2);
mysql_query($sql3);
mysql_query($sql4);

 

Note: The connect parameter is optional, I personally never supply it; but that is up to you.

 

Note: You should probably add some error checking in between there and print appropriate messages.

 

The database is not being created.

 

<?php

include('mysql.php');

$con = mysql_connect("$host", "$user", "$password");

if (!$con) {

	die('Fail. - ' . mysql_error());

}

$sql1 = 'CREATE DATABASE IF NOT EXISTS `' . $database . '`';

mysql_query($sql1, $con);

$sql2 = 'CREATE TABLE IF NOT EXISTS `battles` (
	`battle_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
	`winner` bigint(20) unsigned NOT NULL,
	`loser` bigint(20) unsigned NOT NULL,
)';

mysql_query($sql2, $con);

$sql3 = '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',
)';

mysql_query($sql3, $con);

if ($handle = opendir('images')) {
while (false !== ($file = readdir($handle))) {
	if($file!='.' && $file!='..') {
		$images[] = "('".$file."')";
	}
}

closedir($handle);
}

$sql4 = "INSERT INTO images (filename) VALUES ".implode(',', $images)." ";

mysql_query($sql4, $con);

mysql_close();

header('location: /');

?>

Again, nothing happened...

 

<?php

ini_set("display_errors", "1");
error_reporting(-1);



include('mysql.php');



$con = mysql_connect("$host", "$user", "$password");



if (!$con) {

   die('Falha Na Conexão: ' . mysql_error());

}



$sql1 = 'CREATE DATABASE IF NOT EXISTS `' . $database . '`';



mysql_query($sql1, $con) or trigger_error('Error Creating Database: ' . mysql_error());



$sql2 = 'CREATE TABLE IF NOT EXISTS `battles` (

	`battle_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

	`winner` bigint(20) unsigned NOT NULL,

	`loser` bigint(20) unsigned NOT NULL,

)';



mysql_query($sql2, $con);



$sql3 = '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',

)';



mysql_query($sql3, $con);



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

while (false !== ($file = readdir($handle))) {

	if($file!='.' && $file!='..') {

		$images[] = "('".$file."')";

	}

}



closedir($handle);

}



$sql4 = "INSERT INTO images (filename) VALUES ".implode(',', $images)." ";



mysql_query($sql4, $con);



mysql_close();



header('location: /');



?>

Nothing... =//

 

I commented out all the rest, let only this. Didnt work.

 

<?php



ini_set("display_errors", "1");

error_reporting(-1);



include('mysql.php');



$con = mysql_connect("$host", "$user", "$password");



if (!$con) {

   die('Falha Na Conexão: ' . mysql_error());

}



$sql1 = 'CREATE DATABASE IF NOT EXISTS `' . $database . '`';



mysql_query($sql1, $con) or trigger_error('Error Creating Database: ' . mysql_error());



mysql_close();





?>

http://localhost/.../install.php

 

Yes, show up a blank page. And in "view source" theres nothing.

 

 

install.php

<?php



ini_set("display_errors", "1");

error_reporting(-1);



include('mysql.php');



$con = mysql_connect("$host", "$user", "$password");



if (!$con) {

   die('Falha Na Conexão: ' . mysql_error());

}



$sql1 = 'CREATE DATABASE IF NOT EXISTS `' . $database . '`';



mysql_query($sql1, $con) or trigger_error('Error Creating Database: ' . mysql_error());



$sql2 = 'CREATE TABLE IF NOT EXISTS `battles` (

	`battle_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

	`winner` bigint(20) unsigned NOT NULL,

	`loser` bigint(20) unsigned NOT NULL,

)';



mysql_query($sql2, $con);



$sql3 = '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',

)';



mysql_query($sql3, $con);



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

while (false !== ($file = readdir($handle))) {

	if($file!='.' && $file!='..') {

		$images[] = "('".$file."')";

	}

}



closedir($handle);

}



$sql4 = "INSERT INTO images (filename) VALUES ".implode(',', $images)." ";



mysql_query($sql4, $con);



mysql_close();




?>

Add the following, right after the $sql1 = '.....' statement to see if your code is even running -

 

echo $sql1;

 

If you don't get anything echoed, it is likely that your mysql.php code is dieing.

 

Do you have the mysql extension installed in your php installation? Have you successfully executed any mysql_ statements in a php scirpt?

You need to use the or trigger_error('Error Creating Database: ' . mysql_error()); debugging logic on all your queries.

 

You also need to select the database you just created before you can create any tables in it or you need to specify the database name in the queries.

I did it.

 

<?php



ini_set("display_errors", "1");

error_reporting(-1);



include('mysql.php');



$con = mysql_connect("$host", "$user", "$password");



if (!$con) {

   die('Fail: ' . mysql_error());

}



$sql1 = 'CREATE DATABASE IF NOT EXISTS `' . $database . '`';


mysql_query($sql1, $con) or trigger_error('Fail Connecting To Database: ' . mysql_error());

mysql_select_db("$database") or trigger_error('Fail Selecting Database: ' . mysql_error());



$sql2 = 'CREATE TABLE IF NOT EXISTS `battles` (

	`battle_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

	`winner` bigint(20) unsigned NOT NULL,

	`loser` bigint(20) unsigned NOT NULL,

)';



mysql_query($sql2, $con) or trigger_error('Error Creating Table battles: ' . mysql_error());



$sql3 = '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',

)';



mysql_query($sql3, $con) or trigger_error('Error Creating Table images: ' . mysql_error());



mysql_close();





?>

 

But it's not working.

 

 

You have fatal parse errors in the $sql3 query string, and those won't be reported unless error reporting is on in your php.ini file.

 

You can't use the same type of quote within a string as the quotes that enclose the string without escaping them with a backslash. In this case, since the values are integers, you can drop the quotes entirely. You also need to define the auto_increment field as an index.

 

$sql3 = '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`)
)';

sounds like a user permissions thing... Are you sure the user has enough privileges to create databases? also, you're trying to create a databse based on the value of $database, but I don't see that variable defined anywhere. (I'm assuming it's in mysql.php ??)

 

anyway, just to debug, change:

$sql1 = 'CREATE DATABASE IF NOT EXISTS `' . $database . '`';
mysql_query($sql1, $con) or trigger_error('Fail Connecting To Database: ' . mysql_error());

 

to something like:

$database = 'phpFreaksTestDB';
$sql1 = 'CREATE DATABASE  ' . $database;
if(mysql_query($sql1, $con)){
echo 'database created';
}else{
echo 'failed '.mysql_error();
}

 

and comment out everything that comes after that. This will at least tell you if the user has permissions.

Now everything in this part is ok. Thanks.

 

<?php



ini_set("display_errors", "1");

error_reporting(-1);



include('mysql.php');



$con = mysql_connect("$host", "$user", "$password");



if (!$con) {

   die('Fail: ' . mysql_error());

}



$sql1 = 'CREATE DATABASE IF NOT EXISTS ' . $database;

mysql_query($sql1, $con) or trigger_error('Fail Creating Database: ' . mysql_error());

mysql_select_db("$database") or trigger_error('Fail Selecting Database: ' . mysql_error());



$sql2 = 'CREATE TABLE IF NOT EXISTS `battles` (
	`battle_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
	`winner` bigint(20) unsigned NOT NULL DEFAULT  0,
	`loser` bigint(20) unsigned NOT NULL DEFAULT  0,
	primary key (`battle_id`)
)';

mysql_query($sql2, $con) or trigger_error('Error Creating Table battles: ' . mysql_error());



$sql3 = '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`)
)';



mysql_query($sql3, $con) or trigger_error('Error Creating Table images: ' . mysql_error());



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

while (false !== ($file = readdir($handle))) {

	if($file!='.' && $file!='..') {

		$images[] = "('".$file."')";

	}

}



closedir($handle);

}



$sql4 = "INSERT INTO images (filename) VALUES ".implode(',', $images)." "; 



mysql_query($sql4, $con) or trigger_error('Error Inserting The Images: ' . mysql_error());



mysql_close();



?>

 

But now i'm having problem in index.php. =/

 

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/.../index.php on line 26 Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/.../index.php on line 33

 

 

Just another question. I would like also if that tables exist, to replace it. Like "cleaning" the tables.

But now i'm having problem in index.php. =/

 

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/.../index.php on line 26 Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/.../index.php on line 33

 

Just another question. I would like also if that tables exist, to replace it. Like "cleaning" the tables.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.