ホームページ バックエンド開発 PHPチュートリアル PHP でのデータベースの更新について

PHP でのデータベースの更新について

Jun 23, 2016 pm 02:12 PM

この投稿は、2013-06-03 11:55:36 に UR_Not_Alone によって最終編集されました

PHP を学習し始めたところ、いくつかの基本的な問題に遭遇しました。助けてください
インターネットの例を見て、いくつかの演習を行いました。
ページのコンテンツを入力して送信をクリックすると、insert.php 内のコードを実行してデータベースに挿入するのではなく、デフォルトで insert.php が開きます。なぜですか?
コードは次のとおりです
Html ページ
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head><body><form action="insert.php" method="post" target="win">请输入新闻的title:<input type="text" name="title" />请选择新闻类型:<select name="c_id"><option value="1">体育</option><option value="2">娱乐</option></select><br />请输入新闻的content:<br /><textarea cols="60" rows="15" name="content"></textarea><input type="submit" value="提交" /></form></body></html>
ログイン後にコピー


insert.php
<?phpinclude("connect_mysql.php");$q = "insert into new(title,content,time,news_cate_id) values('".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";mysql_query($q);if(mysql_affected_rows()>0) echo "xinwentianjiachenggong!";?><hr /><a href="add_news.php" target="win">fanhuijixutianjiaxinwen</a>
ログイン後にコピー


connect_mysql.php
<?phpfunction mysql_open(){$mysql_servername="localhost"; //$mysql_username="root";$mysql_password="11111";$mysql_dbname="new";$conn=mysql_connect($mysql_servername ,$mysql_username ,$mysql_password);      mysql_query("set names UTF8"); //UTF8      mysql_select_db($mysql_dbname , $conn);	  return $conn;}?>
ログイン後にコピー


また、画像をアップロードする機能を実装したい場合はどうすればよいですか? アイデアを提供してください。誰かが例を持っていたら最高です


ディスカッションに返信してください

mysql_open();


include("connect_mysql.php") );

mysql_open();

いいえ、クリックしましょう 送信後、insert.php が開き、挿入操作は実行されません。 。 。

insert.php を開くだけです。これはどういう意味ですか?

作者はphp環境に問題がないことを確認しましたか? ? ?

作者の送信ボタンに onclick イベントがあるのを見ませんでしたか?

やあ、たくさんの人のコードを読んだ結果、lz のコードが一番理解しやすいですね! ! ! !

insert.php を開くだけです。これはどういう意味ですか?

開くとは、insert.php がシステムのデフォルトの php ファイル エディターで開かれることを意味します。たとえば、私はデフォルトで Emeditor を使用して開きます。 。 。 。 。 。


PHP 環境はセットアップされていますか? ファイルは Web サーバーのルート ディレクトリに配置されていますか? アクセス方法は?

PHP 環境はセットアップされていますか? ファイルは Web サーバーのルート ディレクトリに配置されていますか? アクセス方法は?

eclipse_php を使用している PHP 環境の設定には問題はないはずです。ファイルは D:Program FilesApache Software FoundationApache2.2htdocsTestInsert (TestInsert はプロジェクト名です) に配置されており、http://localhost/TestInsert/Page にアクセスします。 html にデータを入力して「送信」をクリックすると、http://localhost/TestInsert/insert.php ページが表示されますが、データベースには何も変更がありません。


insert.php を開くだけです。これはどういう意味ですか?

開くとは、insert.php がシステムのデフォルトの php ファイル エディターで開かれることを意味します。たとえば、私はデフォルトで Emeditor を使用して開きます。 。 。 。 。 。
これは間違っています。無視してください。これは、IE で開かれた http://localhost/TestInsert/insert.php ページであるはずです

ポップアップのダウンロード ページは、PHP 環境が正常に一致していないことを示しています

ダウンロードページのポップアップはPHPの環境が一致しませんと表示されますが、環境的には問題ないと思います(値を直接書きます)。データベースには保存されますが、ページから取得することはできません。

PHP 環境が正常に一致していないことを示すダウンロード ページがポップアップ表示されます
そして、PHP5、Mysql、Apache、Eclipse のインストールを確認しましたが、問題はありません。 。 。

、リンクされたデータベースで問題が発生しました。
リンクされたデータベース関数に問題が発生しました。次の関数部分をコメントアウトすると、直接実行できます。

//関数 mysql_open()

//{
$mysql_servername="localhost";
$mysql_password="11111";

$conn= mysql_connect($mysql_servername ,$mysql_username ,$mysql_password);
mysql_query("set names UTF8")
mysql_select_db($mysql_dbname, $conn); // return $conn;
、質問リンクされたデータベースに表示されます。
リンクされたデータベース関数に問題があります。以下の関数部分をコメントアウトすると、直接実行できます。
//関数 mysql_open()
//{
$mysql_servername="localhost";
$mysql_password="11111";

$conn= mysql_connect($mysql_servername ,$mysql_username ,$mysql_password);

mysql_query("set names UTF8")
mysql_select_db($mysql_dbname, $conn)
// return $conn;それは1階と同じで問題ありません。

<?php$con = mysql_connect("localhost","root","11111");if (!$con)  {  die('Could not connect: ' . mysql_error());  }mysql_select_db("new", $con);$sql1 = "select max(id) from new";if(!mysql_query($sql1)){	die('Error: '.mysql_error());}$result = mysql_query($sql1);$id = mysqli_fetch_assoc($result);$sql="INSERT INTO new (id,title, content, time, news_cate_id)VALUES('".$id."','".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";//('2','".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";//将ID直接写成2可以更新,但我想实现自动根据数据库中最大ID(如果有更好的办法请大家说一下)更新//但是这里得到的ID却不是“1”“2”这样的值,谁知道怎么回事。if (!mysql_query($sql,$con))  {  die('Error: ' . mysql_error());  }echo "1 record added";//mysql_close($con)//$q = "insert into new (title,content,time,news_cate_id) values('".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";//mysql_query($q);//if(mysql_affected_rows()>0) echo "xinwentianjiachenggong!";?><hr /><a href="Page.html" target="win">fanhuijixutianjiaxinwen</a>
ログイン後にコピー


我将代码改成上面的样子通过错误信息发现是因为Id字段没有填导致插入失败,上面注释的部分还有问题。希望大家多帮忙,如果大家觉得分数不够我可以追加,只是觉得再开帖子麻烦了。

$result = mysql_query($sql1);
这样得到的result也不是数据库中存的1、2、3这样的值,然后导致更新失败,提示Error: Incorrect integer value: '' for column 'id' at row 1,想问问大家怎么样才能通过查询得到正确的id,或者result值然后插入数据库呢。

如果 id 是主键,那么因为主键不能重复,你向其赋 max(id) 显然是不对的!应为 max(id) + 1
如果 id 是主键,且是自增的,那么就无需向 id 赋值
如果 id 不是主键,但不允许为空,那么不向 id 赋值就是错误的

其实只要打印出 mysql_error() 的结果,就一切明了了

$id = mysql i_fetch_assoc($result); //连接用mysql,这里又用mysqli,肯定要错了,且返回的是一个数组
至少需要这样

$sql="INSERT INTO new (id,title, content, time, news_cate_id)
VALUES
('".$id['max(id)']."','".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";

如果你的id是主键,插入同一个id是会出错的。

如果 id 是主键,那么因为主键不能重复,你向其赋 max(id) 显然是不对的!应为 max(id) + 1
如果 id 是主键,且是自增的,那么就无需向 id 赋值
如果 id 不是主键,但不允许为空,那么不向 id 赋值就是错误的

其实只要打印出 mysql_error() 的结果,就一切明了了
如果 id 是主键,那么因为主键不能重复,你向其赋 max(id) 显然是不对的!应为 max(id) + 1这个我知道,只不过上面写得吧$id++;那句漏掉了。
id是主键,怎么设置主键自增啊。是不是在建表的时候哪里能设置啊?

我数据库的sql如下,哪里不对么?

/*Navicat MySQL Data TransferSource Server         : testSource Server Version : 50153Source Host           : localhost:3306Source Database       : newTarget Server Type    : MYSQLTarget Server Version : 50153File Encoding         : 65001Date: 2013-06-04 14:21:53*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `new`-- ----------------------------DROP TABLE IF EXISTS `new`;CREATE TABLE `new` (  `id` int(11) NOT NULL,  `title` varchar(50) DEFAULT NULL,  `content` varchar(100) DEFAULT NULL,  `time` datetime DEFAULT NULL,  `news_cate_id` int(11) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Records of new-- ----------------------------INSERT INTO `new` VALUES ('1', '111', '111', '2013-06-04 09:40:29', '1');INSERT INTO `new` VALUES ('2', 'eee', 'eeee', '2013-06-04 13:28:20', '1');
ログイン後にコピー

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
这样的话主键就自增了对吧,但是上面对应的
$sql="INSERT INTO new (id,title, content, time, news_cate_id)
VALUES
('".$id."','".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";
这部分应该怎么对应改动呢

$sql="INSERT INTO new (title, content, time, news_cate_id)
VALUES
('".$_POST["title"]."','".$_POST["content"]."',now(),".$_POST["c_id"].")";

知道了,只需要改成最初的样子就可以了,谢谢大家结贴了,结贴之前先追加点分数,以表示感谢

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

2012年のFacebookによる有名な買収に続いて、Instagramはサードパーティの使用のために2セットのAPIを採用しました。これらはInstagramグラフAPIとInstagram Basic Display APIです。

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP状況調査の発表 2025 PHP状況調査の発表 Mar 03, 2025 pm 04:20 PM

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています

See all articles