我刚开始使用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%"> 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%"> 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 :(得分:4)
您的代码存在一些问题。
<form>
。onclick
事件来触发PHP代码。 onclick
事件适用于JavaScript(或其他客户端脚本语言,如VBScript)。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%"> 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%"> 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>