SQL query fra variabel

Tags:    php

Hej.

Jeg har en SQL-streng gemt i en variabel, som jeg ønsker at køre fra en PHP side, men det virker desværre ikke.

$sql = "
CREATE TABLE `traenere` (`id` int(10) NOT NULL auto_increment,`navn` varchar(255) NOT NULL,`adresse` varchar(255) NOT NULL,`postnr` int(10) NOT NULL,`city` varchar(255) NOT NULL,`tlf` varchar(255) NOT NULL,`mobil` varchar(255) NOT NULL,`email` varchar(255) NOT NULL,`dd` int(2) NOT NULL,`mm` int(2) NOT NULL,`yy` int(4) NOT NULL, PRIMARY KEY (`id`)) TYPE=MyISAM;

INSERT INTO `traenere` VALUES ('33','Jens Jensen','midtbyen 25','1234','København','11223344','','jens@jensen.dk','1','12','1983');
INSERT INTO `traenere` VALUES ('34','Peter Petersen','vejlesøvej 7','1234','Nordby','12345678','','peter@petersen.dk','11','12','1995');
";

Query'en virker perfekt direkte i phpMyAdmin, men hvordan kan jeg få den til at køre fra php?



5 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Jeg har lokaliseret problemet en smule.
Når flere SQl-sætninger skal køres på samme vej, kan jeg ikke bare køre den som normalt, den er nødt til at opdeles først.

Her kommer så et mindre problem.
Har prøvet med et lille eksempel fra http://dk2.php.net/mysql_query, der deler strengen ved hver ";" og det virker.

- Desværre vil jeg senere få ; inde i SQL-strengen, så denne løsning ikke kan benyttes.
Nogen der har et bedre forslag?



Forstår ikke helt..hvad er problemet med ; til at dele querys op?



Hvis der i et af felterne i tabellen er en streng der indeholder ; vil de ikke blive korrekt opdelt.



Jamen saa skal du da bare sørge for at der ikke er det :) ved at skifte ; ud. Det er muligt.



Ja, det ville jeg også mene.
Skiftede ; ud med ;### -> det skulle der ikke være den store risiko for, og samtidig vil dette blive anset som en kommentar i phpmyadmin.

Men... Så kommer problemet at af en eller anden grund ikke kører hele queryen igennem. Den opretter den første tabel, og indsætter posterne, og det er det. I filen ligger kommandoer til ca. 20 forskellige tabeller.

Scriptet ser således ud:

function mysql_exec_batch ($p_query, $p_transaction_safe = true) {
if ($p_transaction_safe) {
$p_query = 'START TRANSACTION;' . $p_query . '; COMMIT;';
};
// $query_split = preg_split ("/;###/", $p_query);
$query_split = preg_split ("/[;]/", $p_query);
foreach ($query_split as $command_line) {
$command_line = trim($command_line);
if ($command_line != '') {
$query_result = mysql_query($command_line);
if ($query_result == 0) {
break;
};
};
};
return $query_result;
}

og kaldes efter alle tabeller er slettet med:

mysql_exec_batch ($txt, false);

hvor $txt indeholder queryen.




t