【问题标题】:How to pass table id to another table in PHP如何将表ID传递给PHP中的另一个表
【发布时间】:2015-08-08 06:12:27
【问题描述】:

02 表称为itemcustomer

item(item_id, item_name) customer(cus_id, iid, cus_name)

我只是尝试将item_iditem 存储到customer 中的iid。 但它总是显示null 值。 我的数据库是item_sales

这是我的 PHP 代码

<html>
<title></title>
<head></head>
<body>

<?php 
$hostname = "localhost";
$database = "item_sales";
$username = "root";
$password = "";

$con = mysql_pconnect($hostname, $username, $password);

error_reporting(0);

?>

<form action="index.php" method="post" enctype="multipart/form-data">

<p>Customer Name : <input type="text" name="cus_name" /><br/><br/>  </p>
<p>Select an Item: 
<select name="iid">
        <?php
            $sql = mysql_query("SELECT * FROM item");
            mysql_select_db($database,$con);
            while($sqlv = mysql_fetch_array($sql)) 
            { ?>
                <option id="<?php echo $sqlv['item_id']; ?>"><?php echo $sqlv['item_name']; ?></option>
            <?php } ?>
    </select>
    </p>

 <?php

 if(isset($_POST['submit']))
 {
        $sql2 = "SELECT * FROM item WHERE iid='%item_id%'";
        mysql_select_db($database,$con);
        $mydata = mysql_query($sql2);

        $cus_name = $_POST['cus_name'];


        $sql3 = "INSERT INTO customer (cus_id, iid, cus_name) VALUES ('', '$_POST[iid]', '$cus_name')";
        mysql_query($sql3);

 }
 ?>



 <input type="submit" name="submit" value="Add Sale" />
</form>


</body>
</html>

【问题讨论】:

  • 这是非常危险的代码。您允许将 POST 变量直接插入数据库,而无需进行任何验证。这使您的应用程序对 sql 注入开放。
  • 尽管如此,不确定问题出在哪里,但我不确定第二个 SQL 的 %item_id% 值设置在哪里。这可能是你的问题。
  • 我不知道要更正此代码。但是当我从下拉列表中选择一个选项时,我只想将item_iditem 表存储到customer 表中的iidiid 应该链接到item 表中的item_id。你能更正这段代码吗?
  • 哪个值为NULL?新插入的行?
  • 这段代码有什么作用? $sql2 = "SELECT * FROM item WHERE iid='%item_id%'"; mysql_select_db($database,$con); $mydata = mysql_query($sql2);

标签: php mysql sql row


【解决方案1】:

它不起作用的原因是您试图将 iid 选择保存到 iid 字段中,我猜客户中的 iid 字段是数字类型字段,例如 INT - 使用这样的 POST 变量,您将保存 SELECT 的文本而不是 val。

要解决此特定问题,您需要为每个选择选项设置一个“值”。您已经设置了一个 ID,但这并没有真正的帮助。

<select name="iid">
    <?php
    $sql = mysql_query("SELECT * FROM item");
    mysql_select_db($database,$con);
    while($sqlv = mysql_fetch_array($sql)) 
    { ?>
        <option value="<?php echo $sqlv['item_id']; ?>"><?php echo $sqlv['item_name']; ?></option>
    <?php } ?>
</select>

除此之外,您的代码非常危险。我建议你不要使用原始的 mysql 函数,因为,1)它们不提供任何真正的恶意用户保护,并且 2)它们很快就会从 PHP 支持中删除。

请参阅这篇关于如何从您的 PHP 代码中替换 mysql 功能的 SO 文章:How can I prevent SQL injection in PHP?

那篇文章还可以帮助您了解代码带来的危险。

【讨论】:

  • 我不明白你在说什么。我没有得到解决方案。无论如何感谢您回复克里斯先生。
  • 在输出
  • 是的!!!!!!!它工作了:) :) :) 非常感谢克里斯先生......我在我的代码中改变了一些东西:) 但你是那个人:) 谢谢你:)
  • 很高兴它已解决,但请仔细阅读 SQL 注入并让您的代码不易受到攻击/滥用
【解决方案2】:

正确的代码如下:

<html>
<title></title>
<head></head>
<body>

<?php 
$hostname = "localhost";
$database = "item_sales";
$username = "root";
$password = "";

$con = mysql_pconnect($hostname, $username, $password);

error_reporting(0);

?>

<form action="index.php" method="post" enctype="multipart/form-data">

<p>Customer Name : <input type="text" name="cus_name" /><br/><br/>  </p>
<p>Select an Item: 
<select name="iid">
        <?php
            $sql = mysql_query("SELECT * FROM item");
            mysql_select_db($database,$con);
            while($sqlv = mysql_fetch_array($sql)) 
            { ?>
                <option value="<?php echo $sqlv['item_id']; ?>"><?php echo $sqlv['item_name']; ?></option>
            <?php } ?>
    </select>
    </p>

  <?php

  if(isset($_POST['submit']))
  {
        $sql2 = "SELECT * FROM item";
        mysql_select_db($database,$con);
        $mydata = mysql_query($sql2);

        $cus_name = $_POST['cus_name'];
        $iid = $_GET['item_id'];


        $sql3 = "INSERT INTO customer (cus_id, iid, cus_name) VALUES ('', '$_POST[iid]', '$cus_name')";
        mysql_query($sql3);

    }
    ?>



    <input type="submit" name="submit" value="Add Sale" />
 </form>


 </body>
 </html>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 2021-10-25
    相关资源
    最近更新 更多