質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

1回答

857閲覧

PHPでMySQLから抽出した要素を使用して演算を行いたい

katsucurry

総合スコア3

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2021/11/29 06:04

編集2021/11/30 04:33

前提

XAMPPでPHPファイルをデバッグしています。
前提として、MySQLのデータベース内にレシピと在庫のテーブルが存在します。
レシピにはレシピの名前、材料、材料の個数の欄があります。
在庫には材料と材料の個数の欄があります。
ユーザが入力したレシピの名前でレシピテーブルから材料の個数を抽出します。
抽出した材料の個数が、在庫テーブル内の材料の個数と一致(またはレシピ以上の材料の個数が在庫テーブルにあれば)、在庫テーブルからレシピの材料の個数を削除し,要素を更新します。

実現したいこと

PHPでMySQLから抽出した要素を使用した演算を行いたいです。

発生している問題・エラーメッセージ

Uncaught Error: Object of class mysqli_result could not be converted to string

該当のソースコード

php

1<?php 2session_start(); 3 4$host = $_SESSION["host"]; 5$user = $_SESSION["user"]; 6$pass = $_SESSION["password"]; 7$db = $_SESSION["dbName"]; 8 9$conn = new mysqli($host, $user, $pass, $db); 10 11if( $mysqli->connect_errno ) { 12 echo $mysqli->connect_errno . ' : ' . $mysqli->connect_error; 13} 14 15 16$stmt = $conn->prepare("SELECT 量 FROM レシピ WHERE レシピの名前 = '$レシピ'"); 17$stmt->execute(); 18$result1 = $stmt->get_result(); 19 20$stmt = $conn->prepare("SELECT 材料 FROM レシピ WHERE レシピの名前 = '$レシピ'"); 21$stmt->execute(); 22$result2 = $stmt->get_result(); 23 24 25$stmt = $conn->prepare("SELECT 量 FROM 在庫 WHERE 素材 = '結果'"); 26$stmt->execute(); 27$result3 = $stmt->get_result(); 28 29if($result1 <= $result3){ 30 $ans = $result3 - $result1; 31 $sql = "UPDATE 在庫 SET 32 量=$ans"; 33 if ($conn->query($sql) === TRUE) { 34 echo "更新できました"; 35 } 36}else{ 37 echo"十分な在庫がありません"; 38} 39 40$conn->close(); 41 42?>

不明点

SELECT文を使用して材用の個数を抽出したり、UPDATEでテーブルの情報を更新する方法は理解しているのですが、抽出した要素を変数に代入して計算する方法がわかりません。

補足情報(FW/ツールのバージョンなど)

mysqliを使用したオブジェクト指向で実装を行っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

php

1var_dump($result1); 2var_dump($result3);

すればわかりと思いますが、$result1と$result3はmysqli_resultオブジェクトなので、$result1 <= $result3比べたり、`$result3 - $result1`計算することはできないと思います。

投稿2021/11/29 07:44

skys215

総合スコア910

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

katsucurry

2021/11/29 08:08

コメントありがとうございます。 では、mysql_resultオブジェクト以外で要素を抽出すれば演算や計算に使用できるのでしょうか?
skys215

2021/11/29 10:11 編集

はい、できます。 $result3->Quantity - $result1->Quantity とか
katsucurry

2021/11/29 17:09

演算できました! すごく悩んでいたので、本当に助かりました。 ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問