Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php $\u POST[]没有isset可以正常工作,但是。。。_Php_Mysql - Fatal编程技术网

Php $\u POST[]没有isset可以正常工作,但是。。。

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和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,$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();
}