Php $\u POST[]没有isset可以正常工作,但是。。。
您好,我是php和mysql的新手。但我有个问题,我的问题是: 我正在尝试使用表单将数据插入数据库。 但当我这样做时,它在username-password列中返回1 这是我的Index.php:Php $\u POST[]没有isset可以正常工作,但是。。。,php,mysql,Php,Mysql,您好,我是php和mysql的新手。但我有个问题,我的问题是: 我正在尝试使用表单将数据插入数据库。 但当我这样做时,它在username-password列中返回1 这是我的Index.php: <?php $host = 'localhost'; $dbname= 'akar'; $user = 'akar'; $pass = 'raparen'; $dsn = "mysql:host=$host;dbname=$dbname"; $pdo = new PDO($dsn,$user
<?php
$host = 'localhost';
$dbname= 'akar';
$user = 'akar';
$pass = 'raparen';
$dsn = "mysql:host=$host;dbname=$dbname";
$pdo = new PDO($dsn,$user,$pass);
$username = isset($_POST['username']);
$password = isset($_POST['password']);
$query = "INSERT INTO users (username,password) VALUES(:username,:password)";
$statement = $pdo->prepare($query);
$statement->execute(array(
':username'=> $username,
':password'=> $password
));
?>
它工作正常,但当我这样做时:
$username = $_POST['username'];
$username = isset($_POST['username']);
它在数据库中插入1,而不是在输入中插入文本
抱歉,如果我组织了什么,我是新手。isset返回一个布尔值,该值是检查变量是否设置的结果。它不用于从变量中获取值
$username = isset($_POST['username']);
$password = isset($_POST['password']);
应该是:
$username = $_POST['username'];
$password = $_POST['password'];
或者,如果您想在未设置这些变量的情况下指定默认值,您可以这样做:
$username = isset($_POST['username']) ? $_POST['username'] : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';
这是因为如果var存在且值不是NULL,则返回true,否则返回false。从文档返回值:
如果var存在且值不是NULL,则返回TRUE,否则返回FALSE
否则
因此,通过执行$username=isset$_POST['username'];,您正在将isset的返回值分配给$username,它将存储在数据库中
你应该做的是:
if (isset($_POST['username'])) {
$username = $_POST['username'];
}
因此,仅当设置了$\u POST['username']时,您才分配$\u POST['username']的值。它声称什么索引未定义?非常感谢,它工作了!谢谢你们的帮助,伙计们!最后一段代码将在他们的查询中留下一个未定义的变量错误。感谢您的回答!
if (isset($_POST['username'])) {
$username = $_POST['username'];
}
try {
$statement = $pdo->prepare( $query);
$statement->bindValue( “:username”, $username, PDO::PARAM_STR );
$statement->bindValue( “:password”, $password, PDO::PARAM_STR );
$statement->execute();
} catch ( PDOException $e ) {
echo “Query failed: “ . $e->getMessage();
}