如何使用php在数据库中插入数据

时间:2011-07-12 05:00:00

标签: php sql-server

我刚开始使用php。我在php中编写了一个简单的代码,用于在表客户中插入数据。我正在使用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函数,但是单击按钮数据时没有插入到表中。请有人告诉我这段代码中的问题在哪里。

4 个答案:

答案 0 :(得分:4)

您的代码存在一些问题。

  • 你错过了都铎·康斯坦丁所指出的<form>
  • 另一个问题是你不能像上面那样使用元素的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']) ) { ... }检查特定输入的值。

答案 1 :(得分:3)

如前面的答案所述,您实际上并没有提交逻辑。至少同样重要的是,你自己承认,没有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的FAQ,理想情况下是完整的Javascript和PHP教程。我们无法提供一个答案,你可以用它来编写你的程序,就像你一样 - 我发誓我不会在这里不愉快,我知道你做得最好 - 只是没有将它组合在一起的专有技术。谷歌是你的朋友。祝你好运。

答案 2 :(得分:2)

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

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

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

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

当用户单击提交按钮时,表单会重新加载页面并再次运行PHP脚本。这次if语句在表单HAS被提交时返回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

希望一切都有所帮助。

答案 3 :(得分:1)

您的网页中似乎没有<form> - 数据无法到达您的服务器。

此外,您没有在任何地方阅读输入 - 如何使用有意义的值填充$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>