Php 从PDO函数数组获取变量到另一页

Php 从PDO函数数组获取变量到另一页,php,arrays,mysqli,pdo,Php,Arrays,Mysqli,Pdo,我在一个名为optionals的表中有多行,我正试图在单个函数中逐个获取它们。 表中包含: id | name | stock 1 | article1 | 500 2 | article2 | 255 在functions.php function getStocks($mysqli) { $stmt = $mysqli->query("SELECT * FROM optionals"); $result = $stmt->fetch_all();

我在一个名为
optionals
的表中有多行,我正试图在单个函数中逐个获取它们。 表中包含:

id |   name   | stock
1  | article1 |  500
2  | article2 |  255
functions.php

function getStocks($mysqli)
{
    $stmt = $mysqli->query("SELECT * FROM optionals");
    $result = $stmt->fetch_all();

    //get the first row values
    $nameOptional1 = $result[0][1]; 
    $stockOptional1 = $result[0][2];

    //get the second row values
    $nameOptional2 = $result[1][1]; 
    $stockOptional2 = $result[1][2];

   ... //and code continues until I reached the last row
}
var\u转储($result[0])
将显示:

C:\wamp64\www\functions.php:42:
array (size=3)
  0 => string '1' (length=1)
  1 => string 'article1' (length=19)
  2 => string '500' (length=3)
1。我想在
index.php
中显示
$nameologional1,
,例如,但我无法做到这一点。我试过这样的方法:

include_once“functions.php”

$nameOptional1=getStocks($mysqli)

echo$nameOptional1


2.这是使用准备好的语句获取每行值的好方法吗?如果不是,最好的方法是什么?由于无法进行Sql注入,我刚切换到PHP编写的语句。

您是在函数中回显这些变量还是返回它?是否安装了MySQL本机驱动程序供您使用?您是否通过php的错误报告和查询检查错误?如果没有用户输入,则不需要使用预先准备好的语句。是的,有用户输入。查看您发布的代码,情况似乎并非如此。但是,是的,如果涉及用户输入,就使用它们。顺便提一下您还回答了几个问题中的一个。如果我在index.php中使用
return$nameOptional1
return$stockOptional1
,无论
$stockOptional1=getStocks($mysqli)$nameOptional1=getStocks($mysqli)
将只回显函数的第一个返回值。这是因为返回值只返回“一”个参数,除非您这样连接:
return$parameter1。" " . $参数2按照手册-您还需要某种形式的循环;无论是
foreach
还是
while
   function getStocks($mysqli)
{
    $sql = $mysqli->query("SELECT * FROM optionals");
    $result=mysqli_query($con,$sql);

    // Fetch all
    mysqli_fetch_all($result,MYSQLI_ASSOC);

    //get the first row values
    $nameOptional1 = $result[0][1]; 
    $stockOptional1 = $result[0][2];

    //get the second row values
    $nameOptional2 = $result[1][1]; 
    $stockOptional2 = $result[1][2];

   ... //and code continues until I reached the last row
}