Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将PDO准备好的语句传递给变量_Php_Pdo - Fatal编程技术网

Php 将PDO准备好的语句传递给变量

Php 将PDO准备好的语句传递给变量,php,pdo,Php,Pdo,我正在使用一个准备好的语句将提交的信息上传到MYSQL数据库中。我想知道如何将我准备好的语句传递给一个单独的变量,这样我就可以发布上传内容的摘要。以下是代码: $stmt = $dbh->prepare("INSERT INTO photos (Name, Type, Price, Description, Location, status, id) VALUES (:item_name, :item_type, :item_price, :item_description, :i

我正在使用一个准备好的语句将提交的信息上传到MYSQL数据库中。我想知道如何将我准备好的语句传递给一个单独的变量,这样我就可以发布上传内容的摘要。以下是代码:

$stmt = $dbh->prepare("INSERT INTO photos (Name, Type, Price, Description, Location,    status, id) 
VALUES (:item_name, :item_type, :item_price, :item_description, :image_location, :status, :id)");
$stmt->bindValue(':item_name', $_POST['item_name']);
$stmt->bindValue(':item_type', $_POST['item_type']);
$stmt->bindValue(':item_price', $_POST['item_price']);
$stmt->bindValue(':item_description', $_POST['item_description']);
$stmt->bindValue(':image_location', 'images/'.$_FILES['file']['name']);
$stmt->bindValue(':status', 0);
$stmt->bindValue(':id', 0);

try{
    $stmt->execute();
}catch(PDOException $e){
    $errors[] = $item_name . "not saved in database.";
    echo $e->getMessage();
我想我的问题是:PHP如何存储$stmt变量并执行它?是

$stmt->execute()
是否被视为数组?如果是,我如何访问每个准备好的值,以便发布每个值的摘要


谢谢大家!

您可以执行
$stmt->queryString
来获取语句中使用的SQL查询。
如果您想保存整个$stmt变量(我不明白为什么),您可以复制它。它是PDO语句的一个实例,因此存储它显然没有什么好处。

您只能在执行()时传递数据,而不是使用
->bindParam()


通过这种方式,您将确切地知道将要发送哪些值。

那么,您是否正在尝试查看诸如
$\u POST['item\u name'])之类的内容中的内容,或者“放入变量”后的最终语句是什么样的?第一个很简单,第二个不可能(不进入mysql并查看最近针对您的数据库运行了哪些查询)。是的,我希望看到每个提交的$\u POST['item\u name']的具体实例,以便我可以对提交的信息进行总结。我能看到的唯一方法是创建单独的变量并再次提取$\u POST['item\u name']。我想使用$stmt变量中存储的内容。
$data = [
  ':item_name' => $_POST['item_name'],
  ':item_type' => $_POST['item_type'],
  ':item_price' => $_POST['item_price'],
  ':item_description' => $_POST['item_description'],
  ':image_location' => 'images/'.$_FILES['file']['name'],
  ':status' => 0,
  ':id' => 0,
];

$stmt->execute($data);