PDA

Volledige versie bekijken : AMFPHP Service Browser noob-vraag: hoe kan ik een assoc. Array ingeven als argument?


gbolssens
%Europe/Berlin %765 %2006, 19:22
Hoi allemaal,

Ik heb een method in een AMFPHP class waarin een associatieve array als argument van die method dient. Dit is mijn method:


function makeMove($move)
{
$sql = "INSERT INTO game1 (";
foreach($move as $key => $val)
{
$sql .= $key;
if ($val != $move[count($move)-1])
{
$sql .= ", ";
}
}
$sql .= ") VALUES (";
foreach($move as $val)
{
$sql .= "'".$val."'";
if ($val != $move[count($move)-1])
{
$sql .= ", ";
}
}
$sql .= ")";

mysql_query($sql);
NetDebug::trace($sql);


return mysql_error();

}


in de Service Browser voer ik dit in het Arguments veld in:
["name"=>"eppo", "column"=>"7"]


de resulterende SQL query is:

INSERT INTO game1 (0, 1) VALUES ('name"=>"eppo', 'column"=>"7')

terwijl ik dat eigenlijk had bedoeld als :

INSERT INTO game1 (name, column) VALUES ("eppo", "7")

de resulterende mysql_error is dan ook:

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 '0, 1) VALUES ('name"=>"eppo', 'column"=>"7')' at line 1

Mijn vraag is dus: Hoe kan ik in de service browser een associatieve array ingeven als argument voor mijn method? misschien kan dit wel helemaal niet in de Service Browser, maar ik wil dat dan toch graag eens van iemand bevestigd horen. Kan het wel vanuit Flash? zo ja, hoe moet dat dan? ook met een assoc array? of met een object en zijn properties?


alvast superbedankt + greetz,
GB

meagain
%Europe/Berlin %805 %2006, 20:20
Werk niet met de SB, maar veronderstel dat wanneer je in een html-textvak iets ingeeft dit niet als array maar als string wordt herkend. Het server-side script split deze string op komma's, dus dat klopt... Het script zet dit niet om naar een array...

Stuur je vanuit flash een array of object is er geen probleem, dit wordt door amf als array of object herkend.

Download vooral de laatste versie van amfphp (1.2) ...

De Kale
%Europe/Berlin %840 %2006, 21:10
overigens kun je dit ook in 1 foreach loop doen, met 2 tmp vars om de query te maken

gbolssens
%Europe/Berlin %315 %2006, 08:34
overigens kun je dit ook in 1 foreach loop doen, met 2 tmp vars om de query te maken

(offtopic) Ik dacht dat dat niet ging omdat ik er ") VALUES (" tussen moest proppen. Hoe zou je dat dan specifiek doen? Heb niet direct een flauw idee....

greetz,
GB

P.S. Mijn vraag over de service browser blijft wel open :-)

De Kale
%Europe/Berlin %405 %2006, 10:44
$sql = $tmp1. ") VALUES (".$tmp2;
deze regel gebruik je na de loop om je twee tmp values aan elkaar te rijgen

gbolssens
%Europe/Berlin %331 %2006, 08:57
zoiets dan?



$sql = "INSERT INTO game1 (";
foreach($move as $key => $val)
{
$tmp_keys .= $key;
$tmp_vals .= $val
if ($val != $move[count($move)-1])
{
$tmp_keys .= ", ";
$tmp_vals .= ", ";
}
}
$sql .= $tmp_keys.") VALUES (".$tmp_vals. ")";