当前位置: 首页 > 知识库问答 >
问题:

如何在表[duplicate]中插入值

简培
2023-03-14

我试图在表中插入值,它说的是错误,请告诉我哪里错了,这是我的代码,它说的是请重试

   <?php
    include_once('dbconnect.php');

    if(isset($_POST['submit']))
    {
      $name = $_POST['name'];
      $phone = $_POST['phone'];
      $cash = $_POST['cash'];

      if(mysql_query("INSERT INTO tbl2 VALUES('',$name','$phone','$cash','date('l jS \of F Y h:i:s A'))"))
        echo "Successful Insertion!";
      else
        echo "Please try again";
    }


    $res = mysql_query("SELECT * FROM tbl2");


?>

<form action="" method="POST">
 <input type="text" name="name"/><br />
 <input type="text" name="phone"/><br />
 <input type="text" name="cash"/><br />

<input type="submit" name="submit"  value=" Enter "/>
</form>

<h1>List of companies ..</h1>
<?php
    while( $row = mysql_fetch_array($res) )
      echo "$row[id].$row[Name] 
                <a href='edit.php?edit=$row[id]'>edit</a><br />";
                ?>

你能指导我吗?我以为问题出在约会上

共有1个答案

孟意致
2023-03-14

我能想到的两件事是:;

  1. mysql已被弃用,因此else开始使用。

尽管如此,还是要从头开始,用功能性和最新的代码从头开始。。。

鉴于您的连接正在正常工作,请将其更新为新的mysqli语法,它非常简单,而且更加优雅:

$connect = new mysqli( 'localhost', 'USERNAME', 'PASSWORD', 'DATABASE' );
// check for an error
if ($this->_connection->connect_error)
{
    trigger_error("Connection Error: " . $this->_connection->connect_error(), E_USER_ERROR);
}

现在您已经连接好了,请为您的代码遍历一个新流程。

首先,像当前一样检查submit$\u POST,以便开始运行脚本:

if ( isset( $_POST['submit'] ) )
{
    // Encode the URL when creating the variables
    $name = htmlentities( $_POST['name'] );
    $phone = htmlentities( $_POST['phone'] );
    $cash = htmlentities( $_POST['cash'] );
    $date = date( 'l jS \of F Y h:i:s A' );

    // create sql
    // DO NOT INSERT VALUES STRAIGHT INTO YOUR QUERY
    $sql = "INSERT INTO tbl2 ( name, phone, cash, date ) VALUES ( ?, ?, ?, ? )";

注意:在继续之前,让我解释一下,您永远不应该在查询中插入内容,因为这会将原始用户输入抛到代码的迷雾中。现在,大多数用户不会尝试任何可疑的东西。但是,任何人都可以轻松地在您的输入中抛出一些SQL命令,并删除选择,以及更新您的数据库内容,从而导致许多问题。

以下是一些参考资料:https://en.wikipedia.org/wiki/SQL_injection

要解决这个问题,请使用准备好的语句。您可以在PHP手册上阅读所有关于它的内容;还可以看到一些现实生活中的例子。

    // prepare query
    // USE PREPARED STATEMENTS
    if ($stmt = $connect->prepare( $sql ))
    {
        // bind the params
        $stmt->bind_param('ssss', $name, $phone, $cash, $date);
        // execute the query
        $stmt->execute();

        // check for errors
        if ($stmt->errno)
        {
            $message = array(
                'is_error' => 'danger',
                'message' => 'Error: ' . $stmt->error
            );
        }

        // make sure at least 1 or more rows were affected
        if ($stmt->affected_rows > 0)
        {
            $message = array(
                'is_error' => 'success',
                'message' => 'Success: ' . $stmt->affected_rows . ' rows were inserted.' // value should be 1
            );
        }
        else
        {
            // if not, send warning to user
            $message = array(
                'is_error' => 'warning',
                'message' => 'Warning: ' . $stmt->affected_rows . ' rows were updated.'
            );
        }
        // close your connection
        $stmt->close();
    }
    else
    {
        $message = array(
            'is_error' => 'danger',
            'message' => 'QUERY: error. Try again.'
        );
        exit;
    }
}
else
{
    $message = array(
        'is_error' => 'warning',
        'message' => 'There was no submission attempt. Try again.'
    );
    exit;
}

注意,代码中的代码被分解为多个部分,您可以在其中捕获多个错误,这对于调试很重要;它将允许您准确地知道代码出错的地方,并将您的问题定位到代码的单个部分。

 类似资料:
  • 问题内容: 我面临一个问题,我有两个文件。然后,我想加入一个文件,但每个文件都加入一页。 我看到了下面的一些技巧,但我不知道他们是最好的,因为我的第一个文件有3个波段:,和。第二个有和。 所以我想尽可能保留这种格式,因为摘要中有分页计数器。 我已经尝试过了,但是我的第二页是空白的,高度为5厘米。 列表页=新的ArrayList <>(); 那我该怎么办? 问题答案: 要将多个JRXML添加到一个报

  • PPT/Excel 中插入动态交互图表,需要使用Office应用商城插件。 1) 使用Office2013或以上版本创建一个PPT文档(Excel也可以) 2) 点击“插入”选项卡,再点击“应用商店”按钮打开商店窗口。 3) 在商店窗口中搜索“图表秀”,找到名为“图表秀-PPT动态展示”的外接程序,点击添加即可。 4) 以后再要使用此插件时只需点击“我的加载项”,即可找到并直接使用此插件了。 5)

  • 问题内容: 我有一个包含标识列和代表创建日期的列的表: 由于标识列本身会生成一个值,而CreationDate始终将是当前日期(),因此我可以添加一行,这要归功于: 但是,如果我想添加三个记录,该怎么办? 当前解决方案(编辑了一些输入,因为它没有任何意义) 现在,为了做我想做的,我添加了几行: 虽然,我更希望知道多行的等效项,以防稍后添加另一列具有默认值的列。 有没有办法用或类似的方法将N行插入表

  • 问题内容: 在MySQL中,我会使用 但这会导致SQLite错误。SQLite的正确语法是什么? 问题答案: 在此之前,已经回答了这一问题:是否可以一次在SQLite数据库中插入多行? 要回答您对OMG Ponies的评论,请回答: 从3.7.11版本开始,SQLite确实支持多行插入。理查德·希普(Richard Hipp)评论:

  • 我有两个表和一个表来映射我以前的两个表的关系,我如何使用Spring data JPA高效自动地将数据插入到映射的表中?下面是表结构。 用户(id(PK),名称,电子邮件,userRoleId)角色(id(PK),名称,userRoleId)用户角色(id(PK),userId(FK<-User),roleId(FK<-Role))

  • 我想在标签表中插入标签,也可以在post创建页面的post_标签表中插入标签。当我创建一个新的贴子时,标签插入到标签表中,而不是插入到贴子标签表中。它显示的日期时间格式无效。 SQLSTATE[22007]:无效的日期时间格式:1366不正确的整数值:第1行的列anusondhan.post_tag.tag_id的“start,tas”(SQL:插入到post_tag(post_id,tag_id