Ref : Foreach loop declare variable on select table array
OK ..... No more syntax error
Same question
I've coded out like
$recid = $_GET['recid'];
//sql select string declaration
$sql = "select [Rec_ID],[Bike_ID],[Station],['Line']
from [rfttest].[dbo].[RFT_Records_Log]
where [Rec_ID] = {$recid}";
$query = sqlsrv_query($conn,$sql); //query
//if query fail print out error
if($query === false)
{
die(print_r(sqlsrv_errors(),true));
sqlsrv_close($conn);
}
//continue with fetch array
$recdata = sqlsrv_fetch_array( $query, SQLSRV_FETCH_ASSOC);
//foreach to declare variable
foreach($recdata as $x => $a)
{
$"$x" = $"$a";
}
Result should be
$Rec_ID = row rec_id data ,
$Bike_ID = row bike_id data,
$Station = row station data,
$Line = row line data
but i get these instead
$row rec_id data = row rec_id data ,
$row bike_id data = row bike_id data,
$row station data = row station data,
$row line data = row line data
You have two options.
One (the more secure one) is to use list():
list($Rec_ID, $Bike_ID, $Station, $Line) = $recdata;
This means that variable names can't overwrite variables by accident.
Two (the less secure one) is to use extract()
extract($recdata);
This turns an associative array into a number of variables, but by default will overwrite any variables with the same names that are set. This is the closest to what you're trying to do currently.
You can also pass a flag to extract
to tell it not to overwrite existing variables (or to do a number of other things when there's a conflict).
extract($recdata, EXTR_SKIP);