【问题标题】:How to insert data in database using php如何使用php在数据库中插入数据
【发布时间】:2011-07-12 04:59:59
【问题描述】:

我刚刚开始使用 php。我在 php 中编写了一个简单的代码来在表 customer 中插入数据。我正在使用 mssql 数据库。

<?php
function InsertData()
{
    $link = mssql_connect('db','123','test');

    if (!$link || !mssql_select_db('php', $link)) 
        {
        die('Unable to connect or select database!');
        }

    $sql = " INSERT INTO customer ([Name],[Website])VALUES('$txtName','$txtWebsite')";
    $result = mysql_query($sql, $link);
    if(!$result)
        {
        echo mysql_error();
        exit;
        }
    // close the connection
    mysql_free_result($result); 
    mysql_close();
    echo "Data successfully inserted";
}
?>
      <table border="0" cellpadding="0" cellspacing="0" width="100%">                
        <tr>
          <td colspan="3" height="10" valign="top" width="98%"></td>
       </tr> 
       <tr>
         <td width="22%">   &nbsp;Name:</td>
         <td width="60%"><INPUT type="text" name="txtName" id="txtName" Width="200px" MaxLength="30" /> </td>
       </tr>
      <tr>
         <td colspan="3" height="12" valign="top" width="98%"></td>
      </tr> 
      <tr>
         <td width="22%">   &nbsp;Company Website:</td>
         <td width="60%"><INPUT type="text" name="txtWebsite" id="txtWebsite" width="200px" MaxLength="200" /> </td>                 
      </tr>   
      <tr>
         <td > </td>
         <td > <input type="button" value="submit" id="imgBtnSubmit" click="InsertData()"/> </td>
     </tr>
 </table>

我已经编写了上面的代码来向表中插入数据,并且我在提交按钮的 onClick 事件上调用 InsertData 函数,但是在单击按钮时数据没有插入到表中。请任何人告诉我这段代码的问题在哪里。

【问题讨论】:

  • 糟糕! PHP 不是一种自然的事件驱动脚本语言。那是你的真实代码吗?
  • 这是你的真实代码吗?您不能使用 mssql_connect + mysql_query 并期望它能够工作......这可能是您的问题打印错误或确实出了问题(即使 mysql 和 mssql 拼写相似,但它们是不同的)。

标签: php sql-server


【解决方案1】:

您的代码存在一些问题。

  • Tudor Constantin 指出,您缺少 &lt;form&gt;
  • 另一个问题是您不能像上面那样使用元素的onclick 事件来触发PHP 代码。 onclick 事件适用于 JavaScript(或其他客户端脚本语言,如 VBScript)。
  • 此外,如果您使用 Microsoft SQL Server,请确保使用以 mssql 而不是 mysql 开头的函数。这些功能不可互换。

这是一个简短的例子:

<?php

// The request method is POST.
if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
  // Connect to the database
  $link = mssql_connect('db','123','test');

  // Do more stuff with the database.
}

?>

<form method="POST" action="/path/to/this/file.php">
  <input type="text" name="example" />
  <input type="submit" value="Send" />
</form>

当您单击“发送”按钮时,表单将被发布到 /path/to/this/file.php。通过检查请求方法是“POST”,您可以连接到数据库并相应地插入记录。

检查$_SERVER['REQUEST_METHOD'] 是您可以执行此操作的众多方法之一。您还可以检查是否使用 if ( ! empty($_REQUEST['input_name']) ) { ... } 设置了特定输入的值。

【讨论】:

  • @user99:另外请记住,您发布的代码很容易被 sql 注入。避免这种情况的一种方法是使用准备好的语句/命名参数,就像您可以使用微软的 PDO_SQLSRV 驱动程序一样,请参阅msdn.microsoft.com/en-us/library/ff628175.aspx
【解决方案2】:

正如前面的答案所述,您实际上没有提交逻辑。至少同样重要的是,您自己也承认,没有 MySQL 服务器。 MySQL 和 MS-SQL 是不同的,而且根本不是等价的。您不能使用 PHP MySQL 命令或 MySQL 扩展来与 MS-SQL 对话。

您在这里使用的是 MS-SQL 函数:

 $link = mssql_connect('db','123','test');

    if (!$link || !mssql_select_db('php', $link)) 
        {
        die('Unable to connect or select database!');
        }

然后是这里的 MySQL:

  $sql = " INSERT INTO customer ([Name],[Website])VALUES('$txtName','$txtWebsite')";
    $result = mysql_query($sql, $link);
    if(!$result)
        {
        echo mysql_error();
        exit;
        }
    // close the connection
    mysql_free_result($result); 
    mysql_close();
    echo "Data successfully inserted";

...而且,正如另一个答案所述,您正在尝试使用 Javascript 来调用 PHP 函数。

因此,您有 两个 三个问题 - 嗯,从技术上讲是一个问题。我建议您至少阅读有关 PHP 中 MS-SQL 的常见问题解答,并且最好阅读完整的 Javascript 和 PHP 教程。我们无法提供一个您可以使用的答案,而不是为您编写程序,因为您 - 我发誓我在这里并没有不愉快,我知道你正在尽力而为 - 只是没有把它放在一起的诀窍。谷歌是你的朋友。祝你好运。

【讨论】:

    【解决方案3】:

    正如许多人已经提到的,您的代码中存在一些错误。我对您的问题的解决方案提供了不同的方法。

    您可以在一个 php 文档中执行其他操作,而不是调用 InsertData() 方法。

    这是通过使用 if/else 语句完成的,将“提交”分配给提交按钮的名称值以及特殊的 PHP 变量 $_SERVER['PHP_SELF']。

    首先,服务器检查表单是否已提交。
    首次加载页面时,这将返回 false 并显示表单供他们填写

    当用户单击提交按钮时,表单会重新加载页面并再次运行 PHP 脚本。这一次 if 语句返回 true,因为表单已经提交,所以它执行在 MSSQL 中插入数据并显示成功消息的脚本部分。

    查看以下代码:

    <?php
    if (isset($_POST['submit'])){
        //connect to the database 
        $link = mssql_connect('db','123','test');    
        //display error if database cannot be accessed 
        if (!$link || !mssql_select_db('php', $link)) 
        {
            die('Unable to connect or select database!');
        }
        //assign form input to variables
        $txtName = $_POST['txtName'];
        $txtWebsite = $_POST['txtWebsite'];
        //SQL query to insert variables above into table
        $sql = " INSERT INTO customer ([Name],[Website])VALUES('$txtName','$txtWebsite')";
        $result = mssql_query($sql, $link);
        //if the query cant be executed
        if(!$result)
        {
            echo mssql_error();
            exit;
        }
        // close the connection
        mssql_free_result($result); 
        mssql_close();
        echo "Data successfully inserted";
    }
    else { ?>
        <form name="input" action="$_SERVER['PHP_SELF']" method="POST">
            <table border="0" cellpadding="0" cellspacing="0" width="100%">                
                <tr>
                    <td colspan="3" height="10" valign="top" width="98%"></td>
                </tr> 
                <tr>
                    <td width="22%">Name:</td>
                    <td width="60%"><INPUT type="text" name="txtName" id="txtName" Width="200px" MaxLength="30" /> </td>
               </tr>
               <tr>
                    <td>Company Website:</td>
                    <td><INPUT type="text" name="txtWebsite" id="txtWebsite" width="200px" MaxLength="200" /></td>                 
               </tr>   
               <tr>
                    <td><input type="button" name="submit" value="submit" /></td>
               </tr>
            </table>
        </form>
    <?php } ?>
    

    试试看。这里有一些很棒的 PHP 教程,涵盖了基础知识: http://devzone.zend.com/article/627

    希望对大家有所帮助。

    【讨论】:

      【解决方案4】:

      您的页面中似乎没有&lt;form&gt; - 数据未到达您的服务器。

      另外,您没有在任何地方读取输入 - 如何用有意义的值填充您的 $txtName$txtWebsite

      另外,InsertData 是一个 PHP 函数,它在 服务器端 执行 - 您的 HTML 部分在 客户端 (在浏览器中)进行解释。你不能在那里调用那个函数。

      试试这个:

      <?php
      function InsertData()
      {
          $link = mssql_connect('db','123','test');
      
      if (!$link || !mssql_select_db('php', $link)) 
      {
          die('Unable to connect or select database!');
      }
      $txtName = $_REQUEST['txtName'];
      $txtWebsite = $_REQUEST['txtWebsite'];
      
      $sql = " INSERT INTO customer ([Name],[Website])VALUES('$txtName','$txtWebsite')";
      $result = mssql_query($sql, $link);
      if(!$result)
      {
      echo mssql_error();
      exit;
      }
      // close the connection
      mssql_free_result($result); 
      mssql_close();
      echo "Data successfully inserted";
      }
      
      if ($_REQUEST['txtName'] > ''){
       InsertData();
      }
      ?>
      <form name="input" action="this_file_name.php" method="get">
            <table border="0" cellpadding="0" cellspacing="0" width="100%">                
              <tr>
                <td colspan="3" height="10" valign="top" width="98%"></td>
             </tr> 
             <tr>
               <td width="22%">   &nbsp;Name:</td>
               <td width="60%"><INPUT type="text" name="txtName" id="txtName" Width="200px" MaxLength="30" /> </td>
             </tr>
            <tr>
               <td colspan="3" height="12" valign="top" width="98%"></td>
            </tr> 
            <tr>
               <td width="22%">   &nbsp;Company Website:</td>
               <td width="60%"><INPUT type="text" name="txtWebsite" id="txtWebsite" width="200px" MaxLength="200" /> </td>                 
            </tr>   
            <tr>
               <td > </td>
               <td > <input type="button" value="submit" id="imgBtnSubmit" /> </td>
           </tr>
       </table>
      </form>
      

      【讨论】:

      • 此外,我看不到在哪里调用了InsertData
      • InsertData() 在提交按钮 onClick 事件中被调用
      • 我认为你不能像这样调用 InsertData()
      • 那我应该如何调用函数
      • 你试过我写的代码了吗?你读过任何关于 PHP 教程的介绍吗?
      猜你喜欢
      • 1970-01-01
      • 2013-12-11
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多