Read array from PDO using FETCH_KEY_PAIR - php

I am trying to read the array from the following code. I thought it should be easy but I am struggling.
My code pulls back two variables in the array.
$stmt5=$mysql_link->prepare("SELECT stationlong AS stationlong,tpl AS tpl FROM station WHERE stationlong=:stationlong LIMIT 1");
$stmt5->execute(array(':stationlong'=>$q));
$stations=$stmt5->fetchAll(PDO::FETCH_KEY_PAIR);
var_dump($stations);
$stationlongs=$stations[0];
$stationshorts=$stations[1];
An example array is as follows:-
array(1) {["Leicester"]=>string(6) "LESTER"}
My error is NOTICE: undefined offset: 0 in........... for $stationlongs=$stations[0]; and the same again for $stationshorts but with offset 1

Key 0 doesn't exist. As you see in dump, you have one record. There are no keys 0 and 1 in your one-item array.
echo $stations['Leicester']; // returns LESTER

Related

Storing all value of column of database in array using mysqli_num(why not working)

Why cant the output three values store in the array with indexes as number ?
its giving error as follows:
Notice: Undefined offset: 1 in
F:\xampp\htdocs\dashboard\working_files\admin_home.php on line 63
Notice: Undefined offset: 2 in
F:\xampp\htdocs\dashboard\working_files\admin_home.php on line 64
$m_name_detail1_query="SELECT m_name FROM movies";
$run_m_name_detail1_query=mysqli_query($connection,$m_name_detail1_query);
$fetch_m_name_details=mysqli_fetch_array($run_m_name_detail1_query,MYSQLI_NUM);
?> <?php echo $fetch_m_name_details[0] ?>//working
<?php echo $fetch_m_name_details[1] ?>//not working
<?php echo $fetch_m_name_details[2] ?>//not working
mysqli_fetch_array() returns (in your case) a numerically indexed array of a row of data from your SQL statement, as your SQL is
$m_name_detail1_query="SELECT m_name FROM movies";
each row will only contain 1 value - which is the $fetch_m_name_details[0] you find works.
If you want the value from a sequence of rows, use mysqli_fetch_all()
$fetch_m_name_details=mysqli_fetch_all($run_m_name_detail1_query,MYSQLI_NUM);
you will then find $fetch_m_name_details will contain an array of rows, so you can use
echo $fetch_m_name_details[0][0];
echo $fetch_m_name_details[1][0];
echo $fetch_m_name_details[2][0];
if there are at least 3 rows

Stuck in echoing data out of variable CodeIgniter

I try to get some information out of my database to my webpage. Everything seems to be fine but there is one thing that doesn't want to go right. I put all my information out my database into $data. When i do this
print_r($data);
My webpage gives me this:
(
[0] => stdClass Object
(
[reparatie_id] => 19
[customer_id] => 4
[medewerker] => 4
[name] => Joost
)
)
Everything seems to be good but when i try to do this:
echo $data->voornaam;
I keep getting this error
A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: reparaties/cases.php
Line Number: 7
Backtrace:
File: C:\Ampps\www\beco\application\views\reparaties\cases.php
Line: 7
Function: _error_handler
File: C:\Ampps\www\beco\application\controllers\Reparaties.php
Line: 57
Function: view
File: C:\Ampps\www\beco\public\index.php
Line: 315
Function: require_once
Since your $data is a single-dimensional-array,so it need to be-
$data[0]->reparatie_id;
$data[0]->customer_id;
$data[0]->medewerker;
$data[0]->name;//so on for other indexes
Actually the $data array has an object at 0 position. So you need to any property of object. do like this:
<?php
$data[0]->reparatie_id;
$data[0]->customer_id;
$data[0]->medewerker;
$data[0]->name; ?>
output will be:
19, 4, 4, joost
First of all, your $data array does not have the voornaam element in it. So, assuming you want to echo out the elements that are inside the array, you would use the foreach array, like this:
foreach($data as $value) {
echo $value->name;
echo $value->voorname; //if it exists
}
But, if you just want to access that single element from the array then you would do this:
echo $data[0]->name;

PHP Array Undefined Offset, Even Though The Code Executes

I'm trying to extract some variables from my REQUEST_URI:
liquidfinger.com/key1-value1/key2-value2/key3-value3
I want to transform these values into a php associative array. My code is as follows:
$pState = [];
$stateString = substr($_SERVER['REQUEST_URI'],1);//remove leading slash
if($stateString){
$statePairs = explode("/",$stateString);
foreach($statePairs as $statePair){
$statePairArray = explode("-",$statePair);
$pState[$statePairArray[0]] = $statePairArray[1];
}
}
The $pState array is being created correctly and I can echo all the keys and values. However, I am getting an error_log:
Undefined offset: 1
I am even getting an error_log when there are no key-value pairs, so the IF statement shouldn't be executed, but possibly that is a characteristic of the error_log?
Okay, just to recap, the code was working but I was getting error messages. Further tests yielded the following:
url: www.liquidfinger.com
print_r($pState): Array ( )
[11-Mar-2016 10:01:02 UTC] PHP Notice: Undefined offset: 1 in /home/adamglynsmith/public_html/index.php on line 20
url: http://www.liquidfinger.com/user-2/tab-browseAll/marker-101
print_r($pState): Array ( [user] => 2 [tab] => browseAll [marker] => 101 )
print_r($statePairArray): Array ( [0] => user [1] => 2 ) Array ( [0] => tab [1] => browseAll ) Array ( [0] => marker [1] => 101 )
[11-Mar-2016 10:14:41 UTC] PHP Notice: Undefined offset: 1 in /home/adamglynsmith/public_html/index.php on line 20
[11-Mar-2016 10:14:43 UTC] PHP Notice: Undefined offset: 1 in /home/adamglynsmith/public_html/index.php on line 20
Since I have spent quite enough time on it and since I ultimately wanted to end up with a JavaScript array, I solved - or avoided - the problem by using the php to construct a string for the JavaScript like so:
$stateString = str_replace("/","', ",$stateString);//get rid of slashes
$stateString = str_replace("-",":'",$stateString);//get rid of dashes
$stateString .= "'";//add final single quote
<script>
jState = {<?php echo $stateString; ?>};
</script>
Thanks.
PHP does not guard your code implicitly, so you have to do some extra work to make sure you're actually able to do the correct thing:
$pState = [];
$stateString = substr($_SERVER['REQUEST_URI'],1);//remove leading slash
if($stateString){
$statePairs = explode("/",$stateString);
if (count($statePairs)) >= 1 { // Technically unnecessary unless you want to log the fact you didn't find anything.
foreach($statePairs as $statePair){
$statePairArray = explode("-",$statePair);
if (count($statePairArray) == 2) { // Found two and only two elements
$pState[$statePairArray[0]] = $statePairArray[1];
} else {
//It is very helpful in log statements to include the values of things that produced unexpected results
Log.warn("Invalid key-pair found for statePairArray=" + $statePairArray);
}
}
} else {
LOG.warn("No state pairs found for stateString=" + $stateString);//Or some other appropriate log or exception
}
}
explode may return an empty array if there is nothing to explode on. Therefore you need to check and take an appropriate action if it isn't there.

PHP list issue ( Undefined offset: )

Original SQL query is this;
SELECT id,post_title,post_date FROM wp_posts where id='1'
When I retrieve the record, I am finding it but when it comes to returning the results, I am puzzled. Here is the where I got stuck.
while ($row = mysql_fetch_assoc($RS)) :
print_r ($row);
list($id,$post_title,$post_date) = $row;
endwhile;
print_r ($row) outputs this;
Array ( [ID] => 1 [post_title] => Hello world! [post_date] => 2012-03-27 03:28:27 )
And when I run the list function in there ( for debug purposes obviously ), I get this;
Notice: Undefined offset: 2 in F:\inetpub\wwwroot\whatever\sql.php on line 147
Notice: Undefined offset: 1 in F:\inetpub\wwwroot\whatever\sql.php on line 147
Notice: Undefined offset: 0 in F:\inetpub\wwwroot\whatever\sql.php on line 147
What's causing this?
Replace:
mysql_fetch_assoc($RS)
with:
mysql_fetch_array($RS, MYSQL_NUM)
then it should work, because the list function trys to access the array using numeric keys.
I guess the answer lies somewhere within this;
list() only works on numerical arrays and assumes the numerical indices start at 0.
:(
You might be able to use extract() here instead, as well; (documentation here.)
You used mysql_fetch_assoc, so the resulting array per row has data under a key by column name, whereas "list" tries to match variables to values using numerical array indexes. You can use mysql_fetch_array instead.
$categ = val1 | val2
list($one,$two,$three)=#split('[|]',$categ);
If you try to list the value which is not available it will return the error Undefined Offset.
Here the error will be Undefined Offset 2.
Because while spliting $categ, it will have only two values, if you try to access third value then it will return error.

getting a value from the array in php

when i say
var_dump($this->variables['DEFAULTS_VALUES']);
I get the Following array
array(1) {
["ABE LOB RPT"]=>
string(8) "BEST2"
}
how do i get the value ["ABE BBB CCC"] from this array
when i say in this way $this->variables['DEFAULTS_VALUES'][0]
It says UNDEFINED OFFSET: 0 .how do i get the value ["ABE BBB CCC"] from this array
You're getting "undefined offset" errors because there's no value at index 0 in that array. PHP arrays are actually "ordered maps", and what looks like the first value here is actually a key -- $this->variables['DEFAULTS_VALUES']['ABE LOB RPT'] would give you back 'BEST2'.
If you actually want the keys, the array_keys function would give them to you. Or you could use a foreach loop:
foreach ($this->variables['DEFAULTS_VALUES'] as $key => $value)
{
print "$key: $value<br>\n";
}
In your case, the one and only time through the loop would print out "ABE LOB RPT: BEST2".
Your array is associative array you need this:
echo $this->variables['DEFAULTS_VALUES']['ABE LOB RPT']; // BEST2

Categories