Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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无法使用PDO将数据插入数据库_Php_Mysql_Pdo - Fatal编程技术网

PHP无法使用PDO将数据插入数据库

PHP无法使用PDO将数据插入数据库,php,mysql,pdo,Php,Mysql,Pdo,当我使用simple mysqli时,我想将用户提供的数据插入数据库,它工作得很好,但当我使用PDO时,数据被插入数据库 <?php $server = 'localhost'; $username = 'root'; $pass = ''; $database = 'db'; try { $conn = new PDO("mysql:host=$server;dbname=$database", $username, $pass); $conn-&g

当我使用simple mysqli时,我想将用户提供的数据插入数据库,它工作得很好,但当我使用PDO时,数据被插入数据库

<?php

$server = 'localhost';
$username = 'root';
$pass = '';
$database = 'db';
try {
    $conn = new PDO("mysql:host=$server;dbname=$database", $username, $pass);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully";
} catch (PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}
$name = '';
$password = '';
$email = '';
$uid = '';

$sql = "INSERT INTO users(name,email,password,userid) VALUES(?,?,?, ?)";
if (isset($_POST['username'])) {
    $name = $_POST['username'];
    $password = $_POST['password'];
    $email = $_POST['email'];
    $uid = $_POST['uid'];
    $newpass = hash("sha256", $password);
    if ($name != '' && $password != '' && $email != '') {
        $insertUser = $conn->prepare($sql);
        $insertUser->execute($name, $email, $password, $uid);
    }
}

$conn = null;

只需使用参数数组:

$sql=“插入用户(姓名、电子邮件、密码、用户ID)值(?、、?、?)”;
如果(isset($_POST['username']))
{
$name=$_POST['username'];
$password=$_POST['password'];
$email=$_POST['email'];
$uid=$_POST['uid'];
$newpass=hash(“sha256”,$password);
如果($name!=''&&$password!=''&&$email!='')
{
$insertUser=$conn->prepare($sql);
//使用数组代替普通变量
$insertUser->execute([$name,$email,$password,$uid]);
}
}

你有错误吗?@ADyson没有,我没有收到任何错误。这应该会给你一个错误
execute($name,$email,$password,$uid)
所以请解释一下你运行这个代码时会发生什么。它的哪一行被执行?也许你在PHP中关闭了错误报告功能?因为正如达曼所说,你肯定会看到一个。或者代码没有输入您的
if
块,因此
execute
从不运行。是否进行了调试?如果我们想验证用户输入的数据是否不存在于数据库中,该怎么办?我正在以类似的方式使用select query,但无法监视select query的结果。如果您有任何想法,请与我们共享<代码>$checkUser1=“从电子邮件=?”的用户中选择*;$checkUser=$conn->prepare($checkUser);$checktUser->execute($email)使用
$stmt->rowCount()我尝试了这种方式,但现在无法插入数据。您的代码工作完美,请看这里:完成,非常感谢您的合作