例如,我有一个如下所示的html文件:
<html>
<form action="insert.php" method="post">
Name:<input type="text" name="txtname" />
<input type="submit" name="but" value="Submit" />
</form>
</html>
和下面的php文件:
<?php
if(isset($_POST['but']))
{
mysqli_query($con,"insert into student(Name) values(".$_POST["txtname"].")");
}
?>
我的问题是,如果我可以写$name=$post['txtname']
并在值部分使用$name
,那么点
没有使用,但如果我直接写在值的部分,然后使用点,为什么使用这个点?
答案 0 :(得分:0)
你有两种可能做到这一点......
首先:
mysqli_query($con,"insert into student(Name) values(" . $_POST['txtname'] . ")");
// using single quotes instead of double quotes
第二
mysqli_query($con,"insert into student(Name) values({$_POST['txtname']})");
//dont use any dots but single quotes and simply add it to the string
另外你应该关心内容的一些单引号......
"... values('{$_POST['txtname']}')"
所以它应该是
mysqli_query($con,"insert into student(Name) values('{$_POST['txtname']}')");
正如在评论中指出的那样......你有注射问题并考虑解决这个问题。
你的PHP
<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'foobar');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = $mysqli->prepare("INSERT INTO students ( Name ) VALUES ( ? )");
$stmt->bind_param('s', $_POST['txtname']);
/* execute prepared statement */
$stmt->execute();
printf("%d Row inserted.\n", $stmt->affected_rows);
/* close statement and connection */
$stmt->close();
/* close connection */
$mysqli->close();
?>
答案 1 :(得分:0)
您可以使用带有和不带点的$name
,但$ _POST ['something']在索引引用的方式上有所不同。它会破坏你的查询。
与$_POST
arrays
无关
您也可以像
一样编写它mysqli_query($con,"insert into student(Name) values('{$_POST['txtname']}')");
另一方面,您不应将表单输入直接插入数据库。 先做一些验证。