[英]HTML form sending to MySQL via PHP
我有一个小问题。 我正在尝试将一些数据从页面发送到数据库。
HTML代码:
[insert_php]
$current_user = wp_get_current_user(); //I am using wordpress and I need php on page script.
echo $current_user->ID; // here it shows "1" because I am admin.
[/insert_php]
<form action="http://mysitee.com/xxx.php" method="post">
E-mail: <input type="text" name="email">
Nick: <input type="text" name="user_name">
Server: <select name="server">
<option value="1">1</option>
<option value="2">2</option>
<option value="3" selected>3</option>
<option value="4">4</option>
</select>
<input type="hidden" name="reward" value="123">
<input type="hidden" name="user_id" value="[insert_php]echo "$current_user->ID";[/insert_php]">
<input type="submit" value="Submit">
</form>
这是PHP代码:
<?php
$link = mysql_connect('site.com', 'login', 'pass');
mysql_select_db('mydb');
// Check connection
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$user_id = mysql_real_escape_string($link, $_POST['user_id']);
$user_name = mysql_real_escape_string($link, $_POST['user_name']);
$server = mysql_real_escape_string($link, $_POST['server']);
$email = mysql_real_escape_string($link, $_POST['email']);
$nagroda = mysql_real_escape_string($link, $_POST['reward']);
mysql_query("INSERT INTO winners (user_id, user_name, server, email, reward)
VALUES ('$user_id', '$user_name', '$server', '$email', '$nagroda')");
if (!mysql_query($link)) {
die('Error: ' . mysql_error($link));
}
echo "1 record added";
mysql_close($link);
?>
毕竟,我应该在数据库表中获得user_id 1,但获得“ 0”,而在其他列中没有获得可变变量。 另外,当我启动此脚本时,我只会收到“错误:”。 有任何想法吗?
这里。 您在使用mysql_query("INSERT...
并且if (!mysql_query($link))
时,按Andrewsi所述两次调用mysql_query()
if (!mysql_query($link))
另外,您正在使用基于mysqli的方法mysql_real_escape_string($link
摆脱了$link,
或者更好的是,仅使用mysqli_*
。
修改为$query = mysql_query("INSERT...
然后使用查询变量
if (!$query,$link)
代替。
<?php
$link = mysql_connect('site.com', 'login', 'pass');
mysql_select_db('mydb');
// Check connection
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$user_id = mysql_real_escape_string($_POST['user_id']);
$user_name = mysql_real_escape_string($_POST['user_name']);
$server = mysql_real_escape_string($_POST['server']);
$email = mysql_real_escape_string($_POST['email']);
$nagroda = mysql_real_escape_string($_POST['reward']);
$query = mysql_query("INSERT INTO winners (user_id, user_name, server, email, reward)
VALUES ('$user_id', '$user_name', '$server', '$email', '$nagroda')");
if (!$query) {
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($link);
?>
脚注:
mysql_*
函数弃用通知:
http://www.php.net/manual/zh/intro.mysql.php
自PHP 5.5.0起不推荐使用该扩展,不建议编写新代码,因为将来会删除该扩展。 相反,应使用mysqli或PDO_MySQL扩展名。 另请参见MySQL API概述,以获取选择MySQL API时的更多帮助。
这些功能使您可以访问MySQL数据库服务器。 有关MySQL的更多信息,请参见» http://www.mysql.com/ 。
可以在» http://dev.mysql.com/doc/中找到MySQL的文档。
加,
这是一些有关(mysqli)准备好的语句的教程,您可以研究和尝试:
以下是有关PDO的一些教程:
它的 -
mysql_real_escape_string(string, connection)
而您却做了相反的事情。 修复如下-
mysql_real_escape_string($_POST['user_id'], $link)
建议:不要使用mysql_ *语句,因为在最近的PHP版本中不推荐使用它们。 学习准备mysqli或PDO。
There is a little modification in the code. I think it ll help
<?php
$link = mysql_connect('site.com', 'login', 'pass');
mysql_select_db('mydb');
// Check connection
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$user_id = mysql_real_escape_string($link, $_POST['user_id']);
$user_name = mysql_real_escape_string($link, $_POST['user_name']);
$server = mysql_real_escape_string($link, $_POST['server']);
$email = mysql_real_escape_string($link, $_POST['email']);
$reward = mysql_real_escape_string($link, $_POST['reward']);
$sql="INSERT INTO winners (user_id, user_name, server, email, reward)
VALUES ('$user_id', '$user_name', '$server', '$email', '$nagroda')";
if (!mysql_query($sql,$link)) {
die('Error: ' . mysql_error($link));
}
echo "1 record added";
mysql_close($link);
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.