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

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

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

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

PHP

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

Q&A

解決済

2回答

402閲覧

PHPでのUPDATE

TSKT

総合スコア16

MySQL

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

PHP

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

0グッド

0クリップ

投稿2019/03/10 16:48

編集2019/03/11 14:38

前提・実現したいこと

PHPでデータベースにあるデータを更新するシステムを作っています。
MySQLでUPDATEを実装しましたが実行した場合の処理をしているようなのですがデータベースを確認しても更新されていませんでした。

更新するデータベーステーブルの内容です
テーブル名:article
(id,url,title,text,class,date,user_id,activation_id,delete_id)
id:主キー,AUTO_INCREMENT,INT(8)
text:varchar(5000)

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

UPDATEを実行されていない、もしくは実行しても更新されていない

エラーメッセージ
update test\r\nna\r\ntest

実行しました

Fatal error: Uncaught Error: Call to a member function close() on boolean in /edit.php:53 Stack trace: #0 {main} thrown in /edit.php on line 53

該当のソースコード

php

1<?php include('header.php'); ?> 2 3<?php 4 session_start(); 5 6 $host = "localhost"; 7 $user = "username"; 8 $pass = "password"; 9 $dbname = "dbname"; 10 11 $mysqli = new mysqli($host, $user, $pass, $dbname); 12 if ($mysqli->connect_error) { 13 error_log($mysqli->connect_error); 14 exit; 15 } 16 17 if(!isset($_SESSION['user'])) { 18 header("Location: login.php"); 19 }else if(isset($_POST['main'])){ 20 header("Location: main.php"); 21 }else if(isset($_POST['edit'])) { 22 $text = $mysqli->real_escape_string($_POST['text']); 23 ?><p><?php echo $text; ?></p><?php 24 // POSTされた情報をDBに格納する 25 $query = "UPDATE article SET text='$text' WHERE id='$id'"; 26 $result = $mysqli->query($query); 27 28 if($result) { 29 ?><p>実行しました</p><?php 30 }else{ 31 ?><p>実行出来ません</p><?php 32 } 33 header("Location: main.php"); 34 }else{ 35 // ユーザーIDからユーザー名を取り出す 36 $query = "SELECT * FROM writer WHERE user_id=".$_SESSION['user'].""; 37 $result = $mysqli->query($query); 38 if (!$result) { 39 print('クエリーが失敗しました。' . $mysqli->error); 40 $mysqli->close(); 41 exit(); 42 } 43 44 // ユーザー情報の取り出し 45 while ($row = $result->fetch_assoc()) { 46 $user_id = $row['user_id']; 47 $username = $row['username']; 48 $email = $row['email']; 49 } 50 } 51 52 // データベースの切断 53 $result->close(); 54?> 55 56 57<?php 58 $host = "localhost"; 59 $user = "username"; 60 $pass = "password"; 61 $dbname = "dbname"; 62 63 $mysqli = new mysqli($host, $user, $pass, $dbname); 64 if ($mysqli->connect_error) { 65 error_log($mysqli->connect_error); 66 exit; 67 } 68 69 70 $id = $_POST['id1']; 71 // ユーザーIDからユーザー名を取り出す 72 $query = "SELECT * FROM article WHERE id=".$id.""; 73 $result = $mysqli->query($query); 74 if (!$result) { 75 print('クエリーが失敗しました。' . $mysqli->error); 76 $mysqli->close(); 77 exit(); 78 } 79 80 // ユーザー情報の取り出し 81 while ($row = $result->fetch_assoc()) { 82 $text = $row['text']; 83 } 84 // データベースの切断 85 $result->close(); 86?> 87 <div style="border-style:solid; background-color:#f0f000; margin:5%;"> 88 <center> 89 <form method="post"> 90 <textarea cols="40" rows="20" name="text" style="font-size:30px;margin:2%;"><?php echo $text; ?></textarea><br> 91 <input type="submit" name="edit" value="保存" style="font-size:30px;margin:2%;"> 92 <input type="submit" name="main" value="メイン画面へ" style="font-size:30px;margin:2%;"> 93 </form> 94 </center> 95 </div> 96 97<?php include('footer.php'); ?>

試したこと

色々なサイトを見て、調べて、試しましたが解決しませんでした
最終手段でこのサイトに頼ることにしました
他のページでINSERT、SELECT、DELETE、UPDATE文を使用しましたがそちらは正しく実行されています
ちなみに自分のプログラミング能力は超初心者でPHP、MySQLともにしっかりと勉強していません
サイトを調べて、出来るかな程度でやっています
なので、セキュリティはガバガバです
main.phpで遷移する部分は検証時はコメントアウトして検証しています

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

サーバー:Xserver
PHP:7.0.30

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

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

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

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

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

m.ts10806

2019/03/10 22:05

コードはマークダウンのcode機能を利用してご提示ください
TSKT

2019/03/11 14:18

修正しました 機能をあまり理解していませんでした 今後、気をつけます
guest

回答2

0

ベストアンサー

どこにもUPDATEの前に
$id
に入れている場所が無いです

php

1echo $query

でどういうSQLになっているか確かめてみてはどうですか

実行した後

php

1header ( "Location: main.php" );

としているためどういうSQLになっているか分からない為テスト時にはheader部分はコメントアウトして下さい

投稿2019/03/11 00:24

date

総合スコア1820

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

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

TSKT

2019/03/11 14:31 編集

このページを読み込んだ時に下の方にあるhtmiコードの真上のphpコードで前のページからPOSTされている値を$idにに入れているのですがこれは有効ではないのでしょうか? 自分は有効だと思い、これを利用しようと思ったのですが... header部分はコメントアウトして検証しました その結果、「実行しました」という$resultがtrueの場合の処理を行っていました
TSKT

2019/03/11 19:08

echo $queryで見てました id="";となっておりidが渡されていませんでした なのでhiddenでidを一度受け取り、そこからPOSTするようにコードを記述すると正常にUPDATEが通りました ありがとうございました
guest

0

エラーが起きているけど、すぐにmain.phpへ遷移しているのでわからないだけでは?

投稿2019/03/11 00:47

kasa0

総合スコア578

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

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

TSKT

2019/03/11 14:07

試している際はコメントアウトでmain.phpに遷移しないようにして確認しました。 その結果「実行しましたという」$resultがtrueの場合の処理が行われていました。 情報不足すみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問