新手问题 - php中,$_GET中的数值能被mySQL读到么?
<?php include("../conn.php"); if ($_GET[post]) { $sql = "SELECT * FROM message WHERE id = $_GET[post]"; $query = mysql_query($sql); $row = mysql_fetch_array($query); } if($_POST['submit']) { $sql = "insert into reply (id,id_p,time,content) values('','$_GET[post]',now(),'$_POST[content]')"; mysql_query($sql); echo "<meta http-equiv=refresh content=0"; } ?>
在
$sql = "insert into reply (id,id_p,time,content) values('','$_GET[post]',now(),'$_POST[content]')";
中,id_p的值一直是0,其余的取值都正常,不知道为什么
.$_GET[post]是有值的,在这段代码上方和下方都能用,但是就在这个SQL语句当中不能用...
想了很多办法,比如在代码前面加上$a = $_GET[post],用$row[id](message表中的id其实就是$_GET[post]的值),都不读不到取值;
难道是
echo "
的问题?![]()
回复内容:
<?php include("../conn.php"); if ($_GET[post]) { $sql = "SELECT * FROM message WHERE id = $_GET[post]"; $query = mysql_query($sql); $row = mysql_fetch_array($query); } if($_POST['submit']) { $sql = "insert into reply (id,id_p,time,content) values('','$_GET[post]',now(),'$_POST[content]')"; mysql_query($sql); echo "<meta http-equiv=refresh content=0"; } ?>ログイン後にコピー在
$sql = "insert into reply (id,id_p,time,content) values('','$_GET[post]',now(),'$_POST[content]')";ログイン後にコピーログイン後にコピー
中,id_p的值一直是0,其余的取值都正常,不知道为什么
.$_GET[post]是有值的,在这段代码上方和下方都能用,但是就在这个SQL语句当中不能用...想了很多办法,比如在代码前面加上$a = $_GET[post],用$row[id](message表中的id其实就是$_GET[post]的值),都不读不到取值;
难道是
echo "<meta http-equiv="refresh" content='0";</pre'> <br> 的问题?<br><img src="/static/imghw/default1.png" data-src="http://segmentfault.com/img/bEGSH7" class="lazy" data- alt="新手问题 - php中,$_GET中的数值能被mySQL读到么?" > <p class="answer fmt" data-id="1020000000097100"> </p><p>我觉得你最好定义一个变量给GET过来的值,因为我以前有试过,貌似在SQL语句里头赤果果的写$_GET这样的是行不通的,个人愚见。<br> PS:里头代码低级错误貌似好多额...建议改改在测试...</p> <p class="answer fmt" data-id="1020000000097097"> </p><p>把sql中的<code>$_GET[post]</code>改成<code>{$_GET['post']}</code></p><p>另外,你得加强下编码习惯的培养,这段代码的缩进让人看着抓狂,还有这句<code>echo "<meta http-equiv="refresh" content='0";</code'>输出的html居然没有用<code>></code>闭合,属性也没有用双引号。。。需要修炼下程序员的气质</code></p> <p class="answer fmt" data-id="1020000000097099"> </p><p>首先,你要搞清楚,mysql不会执行任何页面提交过来的任何值;<br> 其次,按你贴的代码的意思,php会解析你页提交过来的值,生成sql 语句;<br> 再次,你的代码书写的令人相当难受,乱缩进,毫无层次感;<br> 再次,请确定你的页面的提交方式,到底是 GET,还是 POST,如果不确定,请直接用 REQUEST,一会 GET,一会 POST ,真是别扭啊;<br> 最后,请你在<code>""</code>里面写复杂变量时,记得加上{},如<code>{$POST['post']}</code></p><p>补充:<br> 确认一下你页面提交过来的参数是否是<code>post</code><br> 你可以在贴出的这个代码的页面打印出页面提交过来的所有值,在开头部份添加以下代码:<br><code>echo <xmp>;</xmp></code><br><code>var_dump($_REQUEST);</code><br><code>echo ;</code></p> <p class="answer fmt" data-id="1020000000097105"> </p><p>你的字段用了tinyint,tinyint是从-128~127的,会不会溢出了?<br> 还有,其实本质上int(10)和int(1)没区别,所以一般不是那种true or false或者是status类型的字段,都不用int(1),你给一个int(10)就好了。</p><p>执行这个把表结构改一下</p><pre class="brush:php;toolbar:false">$sql = "alter table reply change id id int(10) NOT NULL AUTO_INCREMENT"; mysql_query($sql) or die(mysql_error()); $sql = "alter table reply change id_p id_p int(10) NOT NULL"; mysql_query($sql) or die(mysql_error());ログイン後にコピー然后把代码改成这样,把所有信息都打出来看看。
if($_POST['submit']) { $sql = "insert into reply (id_p,time,content) values('{$_GET['post']}',now(),'{$_POST['content']}')"; echo $sql; mysql_query($sql) or die(mysql_error()); $sql = "select * from reply order by id DESC limit 1"; $query = mysql_query($sql); $result = mysql_fetch_array($query); var_dump($result); // echo "<meta http-equiv="refresh" content="0">"; }ログイン後にコピーsql的问题有这么几个:
- 既然id已经是自增主键了,那么就不用在sql里显式插入了
- 双引号里的变量最好用{}括起来
- mysql_query要做错误处理,比如 or die(mysql_error()) 这种用法

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
