如何获取数据并插入同一数据库中的另一个表?

时间:2014-09-30 13:37:38

标签: php mysql database

我有2个表,一个有数据,另一个在同一个数据库中是空白的。

a) - 表“cusrec”是主要的并且包含数据。

b) - 表“order”为空,我想在其中插入数据。

我试图从表“cusrec”中获取数据并将其插入“order”,当我回显时,它显示表“cusrec”的数据,但它没有插入表“order”。两个表都在同一个数据库中。

代码是:

<?php
mysql_connect("localhost","root","");
mysql_select_db('dobhighat');
if(isset($_GET['search'])){
$srch = $_GET['srch'];
$que=mysql_query("select * from cusrec where custid='$srch' OR mobile='$srch'");
$ftch=mysql_fetch_array($que);
$scustid=$ftch['custid'];
$sname=$ftch['name'];
$smobile=$ftch['mobile'];
$totcloth=$ftch['clothpackage'];
if(isset($_POST['confirm']))
{
$ordernum=$_REQUEST['ordernum'];
$orderdate=date('d/m/y');
$ordercloth=$_REQUEST['ordercloth'];
$clothrem=$totcloth-$ordercloth;
$abc=mysql_query("insert into order(custid,name,mobile,totcloth,orderno,orderdate,ordercloth,clothrem)values('$scustid','$sname','$smobile','$totcloth','$ordernum','$orderdate','$ordercloth','$clothrem')");
}
}
?>

<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
</head>
<body>
<?php $orddate=date('d/m/y'); ?>
<form name="form 1" action="" method="get">
<div align="right"><input type="text" name="srch" placeholder="Search by Id or Mobile" size="25">
<input type="submit" name="search" value="Search"></div>
</form>

<form name="form2" action="" method="post">
  <table>
  <tr>
    <td width="103">Order Date</td>
    <td width="94">Customer Id</td>
    <td width="53">Name</td>    
    <td width="71">Mobile</td>
    <td width="144">Order No.</td>    
    <td width="144">No.of Clothes</td>
  </tr>
  <tr>
    <td><?php echo $orddate; ?></td>
    <td><?php echo @$ftch['custid'];  ?></td>
    <td><?php echo @$ftch['name'];  ?></td>
    <td><?php echo @$ftch['lname'];  ?></td>
    <td><?php echo @$ftch['mobile'];  ?></td>
    <td><input type="text" name="ordernum" required></td>    
    <td><input type="text" name="ordercloth" required></td>
  </tr>
  <tr><td colspan="8"><center><input type="submit" name="confirm" value="Confirm"></center></td></tr>
</table>
    </form>
</body>
</html>

需要帮助

4 个答案:

答案 0 :(得分:0)

您可以直接从SQL

执行此操作
INSERT INTO order
       ( custid,
         name,
         mobile,
         totcloth,
         orderno,
         orderdate,
         ordercloth,
         clothrem) 
     SELECT 
            custid,
            name,
            mobile,
            totcloth,
            orderno,
            orderdate,
            ordercloth,
            clothrem
       FROM cusrec
           WHERE custid='$srch' OR mobile='$srch'"

您只需将列与from table匹配为to table

即可

答案 1 :(得分:0)

您是否考虑过从select中插入?有点像...

INSERT INTO ORDER 
   ( custid, name, mobile, otherFields, etc... )
   SELECT same, ordered, fields, as, theInsert
      from custrec where custid='$srch' OR mobile='$srch'

我在您的select where子句中看到的唯一问题是您可以通过OR mobile =&#39;%srch&#39;来获得多个客户。并导致重复订单。

答案 2 :(得分:0)

忘记我所说的关于文档的形式和结构的所有内容(尽管最终可能有用,因为我不知道GETPOST有多可靠。

我是一个渡渡鸟,只是意识到你的表名是order ORDER是SQL中的保留关键字,这就是您的SQL语句不正确的原因!只需将名称放在`之间就可以了:

$abc=mysql_query("insert into `order`(custid,name,mobile,totcloth,orderno,orderdate,ordercloth,clothrem)values('$scustid','$sname','$smobile','$totcloth','$ordernum','$orderdate','$ordercloth','$clothrem')");

或者你可能希望(如果可能的话)重命名表格以避免混淆和未来的问题。

这并不意味着代码是完美的。您仍应查看其他用户和下面列表中的建议,并进行改进。特别是安全问题。


一旦你解决了这个问题,插入就会起作用;但是你还需要解决很多问题:

  • 您不应使用mysql个功能并转到mysqliPDO
  • 您应该清理所有转到数据库或页面的值:
    • 您的代码受SQL注入(请参阅相关评论)。
    • 您的代码受XSS约束(请参阅相关评论)。
  • 您网页中的文档类型不正确(如果您需要html5,则应为<!doctype html>而不是<!doctype>
  • 名称和ID中不得包含空格(请参阅此名称和id表示法:http://www.w3.org/TR/html401/types.html#type-name
  • 如其他答案所述,可以改进SQL语句。你有的解决方案可能工作正常(我没有发现任何明显的错误),但它并不理想,可能会出现性能问题和其他类型的问题(例如:如果两个不同的用户拥有相同的电话号码)。

当我快速查看代码时,可能还有更多我没注意到的事情。

答案 3 :(得分:0)

我认为插入和获取相同的数据我们可以通过使用下面提到的 PHP MYSQLI 代码来完成。

$id=trim($_POST['id']);
$email=trim($_POST['email'];
$env_name=trim($_POST['env_name'];
$sql="INSERT INTO integration (id,email,env_name) VALUES ($id,$email'$envName')";
if(mysqli_query($conn,$sql)){
    $selectSql="SELECT id,email,env_name from integration WHERE id=$id and email='$email'";
    $result=mysqli_query($conn,$selectSql){
        if($result){ 
            $row=mysqli_fetch_array($result, MYSQLI_ASSOC);
            return $row;
        }
    }    
}