【问题标题】:Get data from 2 different forms and continue the same table row从 2 个不同的表格中获取数据并继续相同的表格行
【发布时间】:2016-11-25 08:07:53
【问题描述】:

请帮我完成这件事,因为它已经让我发疯了。

我是整个过程的新手,所以对你来说似乎很容易的事情对我来说可能是一场噩梦,不,谷歌没有帮助:(

所以,我有一个名为 member 的 mysql 表,其结构如下:

  • mem_id
  • 用户名
  • 密码
  • 名字
  • 姓氏
  • titlu(标题)
  • 描述(描述)
  • 喜悦(整数)
  • 通讯

我正在使用 execute.php 解析用户详细信息,如下所示:

<?php
session_start();
include('db.php');
$username=$_POST['username'];

$result  =  mysqli_query($db,"SELECT  *  FROM  member  WHERE  username='$username'");
$num_rows  =  mysqli_num_rows($result);

if  ($num_rows)  {
header("location:  index.php?remarks=failed");
}
else
{
$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];
$username=$_POST['username'];
$password=$_POST['password'];
mysqli_query($db,"INSERT  INTO  member(firstname,  lastname,  username,  password)VALUES('$firstname',  '$lastname',  '$username',  '$password')");
header("location:  index.php?remarks=success");
}
?>

现在我有另一个表格,可以插入礼物详细信息,并且必须继续填写 mysql 中的同一行。

我尝试了以下方法,但没有成功:

<?php
session_start();
include('db.php');
$username=$_POST['username'];

$result  =  mysqli_query($db,"SELECT  *  FROM  member  WHERE  username='$username'");
$num_rows  =  mysqli_num_rows($result);

if  ($num_rows)  {
header("location:  index.php?remarks=failed");
}
else
{
$titlu = $_POST['titlu'];
$descriere = $_POST['descriere'];
$joy = $_POST['joy'];
$comm = $_POST['comm'];
$sql = "UPDATE member 
            SET titlu = '".mysql_real_escape_string($_POST[titlu])."'
            SET descriere = '".mysql_real_escape_string($_POST[descriere])."'
            SET joy = '".mysql_real_escape_string($_POST[joy])."'
            SET comm = '".mysql_real_escape_string($_POST[comm])."'
            WHERE username='".mysql_real_escape_string($_POST['username'])."'";
header("location:  welcome.php?remarks=success");
}
?>

非常感谢您的支持!

【问题讨论】:

  • 在第二个文件中,您正在查询选择用户,计算行数。如果有多于一行,则重定向到备注=失败。所以你不能更新数据,因为如果用户名存在它会重定向假,如果它不存在它不能进行更新,因为用户不存在。
  • 谢谢!你能帮我清理一下吗?
  • 另外你正在做$sql = ... 不会被触发,使用mysqli_query($sql);
  • 把你的 if 条件转一下。 “else”部分的代码应该在“if”部分。就这样。正如首演所说,mysqli_query($sql) 而不是 $sql = 没见过这个。
  • 您不应将mysqli_mysql_ 混用。特别是,mysql_real_escape_string 应该是 mysqli_real_escape_string。见stackoverflow.com/questions/17498216/…

标签: php mysql


【解决方案1】:

将您的第二个文件更改为以下代码。仅当给定用户名不存在用户时,它才会重定向到index.php?remark=failed

 <?php
    session_start();
    include('db.php');
    $username=$_POST['username'];

    $result  =  mysqli_query($db,"SELECT  *  FROM  member  WHERE  username='$username'");
    $num_rows  =  mysqli_num_rows($result);

    if  (!$num_rows)  {
    header("location:  index.php?remarks=failed");
    }
    else
    {
    $titlu = $_POST['titlu'];
    $descriere = $_POST['descriere'];
    $joy = $_POST['joy'];
    $comm = $_POST['comm'];
    $sql = "UPDATE member 
                SET titlu = '".mysql_real_escape_string($_POST[titlu])."',
                descriere = '".mysql_real_escape_string($_POST[descriere])."',
               joy = '".mysql_real_escape_string($_POST[joy])."',
                comm = '".mysql_real_escape_string($_POST[comm])."'
                WHERE username='".mysql_real_escape_string($_POST['username'])."'";
mysqli_query($sql);
    header("location:  welcome.php?remarks=success");
    }
    ?>

【讨论】:

  • 恐怕这并没有解决我的问题,数据仍然没有添加到缺少的表列中。我现在正在尝试不同的方法。我会尽快更新
  • @MureaAdrian 我认为在第二个文件中 $_POST[username] 为空。那将是问题
【解决方案2】:

我设法通过以下方式完成了它:

<?php
    session_start();
    include('db.php');
    include('session.php');
    
    $res  =  mysqli_query($db,"SELECT * FROM member where mem_id=$loggedin_id");    
    $num_rows  =  mysqli_num_rows($res);

    if  (!$num_rows)  {
        header("location:  welcome.php?remarks=failed");
    }
    else
    {
    $titlu = $_POST['titlu'];
    $descriere = $_POST['descriere'];
    $joy = $_POST['joy'];
    $comm = $_POST['comm'];
    
mysqli_query($db,"UPDATE member 
               SET titlu = '$titlu',
               descriere = ' $descriere ',
               joy = '$joy',
               comm = '$comm'
               where mem_id=$loggedin_id");
    header("location:  welcome.php?remarks=success");
    }
    ?>

【讨论】:

    【解决方案3】:

    您可以使用 mysqli_insert_id 获取最后一个 id 插入。然后用 id 更新。

    【讨论】:

    • 但是如果其他人用另一个插入物先到达那里怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    相关资源
    最近更新 更多