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

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

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

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

PHP

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

Q&A

解決済

2回答

1467閲覧

PHPで最小値を取得後、データーベースにその最小値と一致しない数字を取得したい

nguyenseiji

総合スコア156

MySQL

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

PHP

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

1グッド

0クリップ

投稿2020/07/30 18:14

編集2020/07/30 19:12

お世話になっております。

現在、Mysql上で最小値を取得後

for文で回しながら最小値とデーターベース上にあるidカラムが一致しない数字を

取得してpritnしたいです

for文で最小値の数字がidのカラム上にある場合は最小値が入っている変数である

$idを++します

そして再度$id++した変数の数字を使ってidカラムを確認したいです

なぜか『1』としか表示されず困っています

データーベース上のidカラムに89まではあるので90と表示されれば成功なのですが...

下記,実行処理ファイル

php

1 2try{ 3 4 require_once("../confidential/detabaseAccses.php"); 5 6 $selectedId = true; 7 8 9 $stmt = $dbh->query("SELECT MIN(id) FROM hagoli"); 10 11 12 13 $id = mysql_fetch_assoc($stmt); 14 15 16 print $id; 17 18 19 for($id; $selectedId == true ;$id++){ 20 21 $stmt = $dbh->prepare("SELECT id from hagoli WHERE id NOT in($id)"); 22 $stmt->execute(); 23 24 if($stmt == true){ 25 26 print $id; 27 28 $selectedId = false; 29 30 } 31 32 }

下記データーベースへのアクセス権限記載ファイルdetabaseAccses.php

php

1<?php 2 3try{ 4 5$dsn = 'mysql:dbname=hagoli;host=localhost;charset=utf8'; 6$user = 'root'; 7$password = 'root'; 8 9$dbh=new PDO($dsn,$user,$password); 10 11$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 12 13 14}catch(exception $e){ 15 16 17print "データベースのユーザー名またはパスワードが間違えています"; 18 19exit(); 20 21} 22 23 24 25?>
javahack👍を押しています

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

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

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

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

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

guest

回答2

0

前の質問の回答がほとんどいきてない気がします。
再三「PHPマニュアルを確認しましょう」とアドバイスしたはずですが・・・。

PDOなのにmysql_fetch_assoc使っているのは意味が分かりません。
そもそもPHP7では削除された機能なので普通に環境構築していたら動かないのでは。

mysql_fetch_assoc

警告
この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。 MySQLi あるいは PDO_MySQL を使うべきです。

参考にしている記事や書籍が古いのでは?
下記のような記事の方が良いです。
PHPでデータベースに接続するときのまとめ

いずれにしてもエラー出ているはずです。設定確認してください。
PHPのエラー表示設定について

本題:

なぜか『1』としか表示されず困っています

それはたぶん「true」を意味する「1」が出ているだけです。

idカラムに89まではあるので90と表示されれば

minとってるのであれば、最小値以外から89まで表示されるはずですね。

for($id; $selectedId == true ;$id++){

このfor文も何がしたいのか良く分かりません。

というか、「最小値と一致しない値」くらいならSQLだけで取れるはずです。
サブクエリ

SQL

1SELECT 2 id 3from 4 hagoli 5WHERE 6 id !=( 7 SELECT 8 MIN(id) 9 FROM 10 hagoli 11 )

投稿2020/07/30 20:32

m.ts10806

総合スコア80850

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

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

nguyenseiji

2020/07/30 21:01

参考サイトが古いみたいです... ちょっと再度、調べて整理します
m.ts10806

2020/07/30 21:03

1年以上前の情報は全て疑ってください。 機能をPHPマニュアル確認すれば鮮度は明確です。 PHPマニュアルを活用できるようになれば自身で解決できるようにもなるし 成長にも繋がります。
nguyenseiji

2020/07/31 02:38

なんとか調べて自分なりにアレンジして エラーは出ていないのですが 表示したい数字?がどうしてもできないです 現在idカラムには79までの数字が登録されておりますので 80と表示させたいのですが...
nguyenseiji

2020/07/31 02:38

『修正後のコード』 $stmt = $dbh->query("SELECT id from hagoli WHERE id != (SELECT MIN(id) FROM hagoli)"); foreach($stmt as $result){ //先頭のキーを取得したらbreakでループを抜ける break; } var_dump($result);
nguyenseiji

2020/07/31 02:39

『出力結果』 array(2) { ["id"]=> string(1) "2" [0]=> string(1) "2" }
nguyenseiji

2020/07/31 02:40

そもそもなぜか配列でしか取得できていないので また最小値を取得できていない? とりあえず先頭のレコードのみ取得したのですが...
nguyenseiji

2020/07/31 02:41

最小値は1個しかないので配列にはならないと思うのですが どこで配列になってしまっているのでしょうか
nguyenseiji

2020/07/31 02:42

すいません 別の方法があったので試します
m.ts10806

2020/07/31 05:31

提示した情報を参照せずに悪手で自己解決とは。
m.ts10806

2020/07/31 05:39

そのままでいっても別の人から同じ指摘受けるだけですよ。
nguyenseiji

2020/07/31 05:54

頂いた情報はすべて目を通しております ほかにもいろいろな情報を見て思考錯誤した結果 解決して 自己解決しましたが そちらの方がコードが見やすいのかと思い そのようにやりましたが、確かにせっかく回答いただいているのに 自己解決は悪手ですので 次回からきよつけます 参考サイトの方ありがとうございました 本当に助かりました
guest

0

自己解決

解決しました
下記修正コード

php

1 2 $stmt = $dbh->query("SELECT MIN(id) from hagoli "); 3 4 5 6 7 foreach($stmt as $row){ 8 9 10 11 $succses = $row[0]; 12 print $succses; 13 14 15}

投稿2020/07/31 05:29

nguyenseiji

総合スコア156

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問