【问题标题】:How to use $_Get to store its values in a database?如何使用 $_Get 将其值存储在数据库中?
【发布时间】:2012-12-15 16:51:45
【问题描述】:

我想显示“超级”用户负责的所有用户。然后“超级”用户可以通过点击他们的用户 ID 向任何用户发送评论。

显示所有用户的第一部分工作正常!我的问题是超级用户发送评论。我想将用户 ID(即suid)存储在数据库中。所以我想使用$_Get 函数。但是当我尝试它时,数据库中没有任何存储。我想我犯了一个错误。那么有人可以帮我解决这个问题吗?

这是向超级用户显示所有用户的代码:

    <?php

session_start();?>
<?php
require("noCache.php");
$uid=$_SESSION['uid'];

?>
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Send a comment</title>
<meta charset="utf-8">
<link rel="stylesheet" href="css/reset.css" type="text/css" media="all">
<link rel="stylesheet" href="css/layout.css" type="text/css" media="all">
<link rel="stylesheet" href="css/style.css" type="text/css" media="all">
<script type="text/javascript" src="js/jquery-1.4.2.js" ></script>
<script type="text/javascript" src="js/cufon-yui.js"></script>
<script type="text/javascript" src="js/cufon-replace.js"></script>
<script type="text/javascript" src="js/Myriad_Pro_400.font.js"></script>
<script type="text/javascript" src="js/Myriad_Pro_700.font.js"></script>
<script type="text/javascript" src="js/Myriad_Pro_600.font.js"></script>
</head>


<body>
<div class="main">

    <header>
        <div class="wrapper">
            <h1><a href="index.php" id="logo"> Biz</a></h1>

        </div>
        <nav>
            <ul id="menu">
                <li class="alpha"><a href="index.php"><span><span>Home</span></span></a></li>
                <li><a href="About.html"><span><span>About</span></span> </a></li>
                <li><a href="Projects.html"><span><span>Projects</span></span></a></li>
                <li><a href="Contacts.php"><span><span>Contacts</span></span></a></li>
                <li class="omega"><a href="Services.html"><span><span>Services</span></span></a></li>
            </ul>
        </nav>
        </br></br>

</header>


<head>
<!-- CSS Stylesheet -->
<style type="text/css">
html{

}
body{
    text-align:center;

}

</style>
</head>
<?php
$dbh=mysql_connect("localhost", "root", "hahaha1") or die (mysql_error());
mysql_select_db ("senior");
$result = mysql_query("SELECT * FROM sensorusers where uid=$uid");
echo "<html><body>";
echo "<table cellspacing=10 cellpadding=5 ><tr> <th>ID</th><th>Name</th><th>Username</th><th>Password</th><th>Date of Registeration</th><th>Phone</th></tr>";
while ($row = mysql_fetch_array($result))
{   echo "<form method='post' action='sendcomment.php'>";
    echo "<tr><td><input type='submit' name='suid' value='".$row['suid']."' /></td>";
    echo "<td>" . $row['name'] . "</td>";
    echo "<td>" . $row['dusername'] . "</td>";
    echo "<td>" . $row['password'] . "</td>";
    echo "<td>" . $row['date'] . "</td>";
    echo "<td>" . $row['phone'] . "</td></tr></form>";
    $_GET['suid'] = $row['suid'];
}

echo "</table></body></html>";
mysql_close($dbh);
?>
<html>
<body>
<!-- CSS Stylesheet -->
<style type="text/css">

body {

    font-family:"Andalus"
    font: 16px ;
    color:black;
    padding: 30px 5px;
    text-align: center;
}

</style></body></html> 

这是我想问的部分:

echo "<table cellspacing=10 cellpadding=5 ><tr> <th>ID</th><th>Name</th><th>Username</th><th>Password</th><th>Date of Registeration</th><th>Phone</th></tr>";
while ($row = mysql_fetch_array($result))
{   echo "<form method='post' action='sendcomment.php'>";
    echo "<tr><td><input type='submit' name='suid' value='".$row['suid']."' /></td>";
    echo "<td>" . $row['name'] . "</td>";
    echo "<td>" . $row['dusername'] . "</td>";
    echo "<td>" . $row['password'] . "</td>";
    echo "<td>" . $row['date'] . "</td>";
    echo "<td>" . $row['phone'] . "</td></tr></form>";
    $_GET['suid'] = $row['suid'];
}

解决方案:

感谢大家的帮助。我修复了代码。我第一次使用方法post 来保存suid 的值。然后我将其打印为隐藏输入。最后,我将隐藏输入的值保存在 sql 中,它可以工作了!

【问题讨论】:

  • 请仅发布与您的问题相关的代码。
  • 如果输入 int,你的 suiduid 在表中吗?
  • 是的,它们都是整数

标签: php mysql get


【解决方案1】:

您的代码中有POST我看不到GET,如果您使用GET或POST方法,它取决于您的html输入(您没有发布它们)。 如果你的方法是 GET 那么你使用 GET

但是尝试使用这个

     if(isset($_POST['submit'])){

而不是

   if($submit){

编辑。

您正在使用method='post' 那么你必须使用POST 而不是GET

编辑2: 你的 sql 有错误,你使用了VALUE,它应该是VALUES

而不是这个

 $place="INSERT INTO comments VALUE

替换为

 $place="INSERT INTO comments (columns here ,..., ,..) VALUES

【讨论】:

  • $submit= $_POST['submit']; submit 变量是通过 $_POST 设置的,所以真的要使用 OP 正在尝试的东西 if (isset($submit)){ ... }
  • 我用过帖子,但数据库中没有 suid :(
  • thhhhank u 帮助我修复了代码.. 我第一次使用 post 方法保存 sid 的值,然后我将其打印为隐藏输入,然后保存隐藏输入的值在sql中!非常感谢你
  • 很高兴它对你有帮助:),请务必接受这个答案,祝你好运
  • 没有帮助,因为你告诉我使用 post 方法再次感谢!
【解决方案2】:

如何使用$_GET
将数据放在 URL 中,如下所示:

sendcomment.php?suid=blahblahblah

然后你可以使用$_GET,像这样:

$suid = $_GET['suid']

目前您的代码使用POST 发送suid
或者改变你的表单方法。


echo "<form method='post' action='sendcomment.php?suid=".$row['suid']."'>";

【讨论】:

    【解决方案3】:

    您的代码中有多个问题。我会尝试列出最大的,但可能仍然会遗漏一些。

    代码 1 -
    问题 1-
    您有多个 &lt;html&gt;&lt;/html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;/body&gt; 块。

    <html>
    ...
    <head>
    ...
    </head>
    <body>
    ...
    <head>
    ...
    </head>
    ...
    echo "<html><body>";
    ...
    echo "...</body></html>";
    ...
    <html>
    <body>
    ...
    </body>
    </html>
    

    问题 2-
    您的 &lt;form&gt; 位于 &lt;td&gt; 块周围,这是无效的,因此它不会正确地 POST。它要么需要在桌子周围&lt;form&gt;&lt;table&gt;&lt;/table&gt;&lt;/form&gt;,要么在单元格内&lt;td&gt;&lt;form&gt;&lt;/form&gt;&lt;/td&gt;

    echo "<table cellspacing=10 cellpadding=5 ><tr> <th>ID</th><th>Name</th><th>Username</th><th>Password</th><th>Date of Registeration</th><th>Phone</th></tr>";
    while ($row = mysql_fetch_array($result))
    {   echo "<form method='post' action='sendcomment.php'>";
        echo "<tr><td><input type='submit' name='suid' value='".$row['suid']."' /></td>";
        echo "<td>" . $row['name'] . "</td>";
        echo "<td>" . $row['dusername'] . "</td>";
        echo "<td>" . $row['password'] . "</td>";
        echo "<td>" . $row['date'] . "</td>";
        echo "<td>" . $row['phone'] . "</td></tr></form>";
        $_GET['suid'] = $row['suid'];
    }
    
    echo "</table></body></html>";
    

    问题 3-
    您在滥用$_GET,它超出了您的&lt;form&gt;&lt;/form&gt; 标签。 $_GET 用于从url 中获取值。

    $_GET['suid'] = $row['suid'];
    

    代码 2-
    问题 1-
    您正在设置$id1=$_GET["suid"];,但在代码#1 的表单中,您使用的是method="post"

    $id1=$_GET["suid"];
    

    问题 2-
    当您从代码 #1 发布到代码 #2 (&lt;form&gt;&lt;input type='submit' name='suid' value='".$row['suid']."' /&gt;&lt;/form&gt;) 时,您只发送 name='suid',因此您的所有 $_GET$_POST 变量将不会被设置为用于 INSERT-

    $id1=$_GET["suid"];
    ...
    $name=$_POST['sent_by'];
    $id=$_POST['hidden_id'];
    $id2=$_POST['hidden_id2'];
    $message=$_POST['message'];
    $submit= $_POST['submit'];
    ...
    

    问题 3-
    您的查询有错误。它应该是VALUES,而不是VALUE,您应该在`INSERT INTO cmets (id,name,message,receiver,sender,date,time) VALUES ('','$name','$message) 之前包含列','$id','$id1','$date','$time')

    $place="INSERT INTO comments VALUE('','$name','$message','$id','$id1','$date','$time')";
    $run = mysql_query("$place");
    

    问题 4-
    您表单中的所有value= 都缺少值周围的引号''

    <form action="sendcomment.php" method="post">
        <input type ='hidden' name='hidden_id' value = <?php print $uid; ?> >
        <input type ='hidden' name='hidden_id2' value = <?php print $id1; ?> >
        Name : <input type ='name' name='sent_by'  value = <?php print $username; ?>></br> 
         Message: <textarea name='message'></textarea></br> 
         <input type='submit' value='submit' name="submit" /></br>
    </form>
    

    我知道你已经接受了一个答案,但是你还有很多代码问题需要解决。这些中的每一个都会导致您的表单出现问题并插入数据库。此外,它们会给您带来更多问题。

    【讨论】:

    • 您的回复真的很有用,我对代码进行了更改.. 但我不明白“当您从代码 #1 发布到代码 #2 时(
      ),你只是发送 name='suid',所以你所有的 $_GET & $_POST vars不会设置为在 INSERT 中使用”
    • 您的第一个文件循环 while($row = mysql_fetch_array($result)) 创建一个表单以发布到 sendcomment.php - &lt;form method='post' action='sendcomment.php'&gt;。该表单中的唯一字段是 suid - &lt;input type='submit' name='suid' value='".$row['suid']."' /&gt;。在sendcomment.php 的第一页加载时,它会尝试设置您的$vars - $id1=$_GET["suid"]; $name=$_POST['sent_by']; $id=$_POST['hidden_id']; $id2=$_POST['hidden_id2']; $message=$_POST['message']; $submit= $_POST['submit'];。您应该将这些 & if($submit){} 块放在 if(isset($_POST['message'])){} 中以验证是否已发布
    【解决方案4】:

    就这么简单

    $id1=$_GET["suid"];
    

    替换为

    $id1=$_POST["suid"];
    

    当使用 $_GET 变量时,应该在 url 中。 使用 $_POST 变量时,url 中不显示

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 2016-04-08
      相关资源
      最近更新 更多