2011-07-12 80 views
0

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

<?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功能没有得到插入表中。请任何人告诉我这个代码中的问题在哪里。

+0

糟糕! PHP不是一种自然事件驱动的脚本语言。这是你的真实代码吗? – dpp

+0

它是你的真实代码吗?您不能使用'mssql_connect' +'mysql_query'并期望它的工作......这是不是在你的问题或一些印刷错误真的出现问题(即使mysql和mssql的法术类似,它们是不同的)。 – a1ex07

回答

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> 
+0

此外,我没有看到whereInsertData被称为 –

+1

InsertData()调用提交按钮onClick事件 – user99

+0

我认为你不能调用InsertData()这样的 –

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教程。没有办法,我们可以提供一个答案,你可以用你的程序为你写短文,因为你 - 我发誓我没有在这里不愉快,我知道你正在尽力 - 只是没有知道如何把它放在一起呢。谷歌是你的朋友。祝你好运。

4

你的代码有几个问题。

  • 您错过了Tudor Constantin指出的<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'])) { ... }来检查特定输入的值。

+0

@ user99:还请记住,您发布的代码很容易sql注入。避免这种情况的一种方法是使用准备好的语句/命名参数,就像您可以使用Microsoft的PDO_SQLSRV驱动程序一样,请参阅http://msdn.microsoft.com/zh-cn/library/ff628175.aspx – VolkerK

2

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

而不是喊你可以做一些事情的一个PHP文件中否则InsertData()方法。

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

首先,如果表单被提交,服务器检查。
第一次加载页面时,将返回false并显示表单以供他们填写

当用户单击提交按钮时,表单将重新加载页面并再次运行PHP脚本。这次if语句返回true,因为表单HAS已经被提交,所以它执行脚本的部分插入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

希望所有的帮助。

相关问题