我有一个发布到createcsv.php的表单。该表单有两个字段"entmonth"和"entyear"。我在createcsv.php中遇到了问题,"entmonth"可以正确拉取,但"entyear"似乎不能拉取$_POST['entyear']变量。我有一些输入,需要知道我在这些代码行中哪里出错了。
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$entmonh='$_POST[entmonth]';
$entyear='$_POST[entyear]';
$select = "SELECT * FROM POs WHERE entmonth = '$entmonth' AND entyear = '$entyear'";发布于 2013-11-25 23:44:34
是的,你可以使用:
$entmonh=$_POST[entmonth];
$entyear=$_POST[entyear];正如其他人所说的那样。
但是你应该尝试使用mysqli或PDO insted,因为你使用的是一个过时的php模块,而且你的metode也是不安全的。这里有一个很好的教程的链接:http://net.tutsplus.com/tutorials/php/pdo-vs-mysqli-which-should-you-use/
链接中的一个示例是一个带有命名参数的简单连接,用于保护您的数据库免受注入:
$pdo = new PDO("mysql:host=localhost;dbname=database", 'username', 'password');
$params = array(':username' => 'test', ':email' => $mail, ':last_login' => time() - 3600);
$pdo->prepare('
SELECT * FROM users
WHERE username = :username
AND email = :email
AND last_login > :last_login');
$pdo->execute($params);发布于 2013-11-26 00:01:16
如果您坚持使用现在已经折旧的mysql_*插件,请至少这样做:
mysql_connect($host, $username, $password)or die("cannot connect");
mysql_select_db($db_name)or die("cannot select DB");
$entmonh = mysql_real_escape_string($_POST['entmonth']);
$entyear = mysql_real_escape_string($_POST['entyear']);
$select = "SELECT * FROM POs WHERE entmonth = '$entmonth' AND entyear = '$entyear'";这将提供一些针对SQL注入的保护。
但请不要以这种方式编写新代码。使用mysqli_*或learn (或使用mysqli的准备好的语句)。
https://stackoverflow.com/questions/20196914
复制相似问题