简体   繁体   English

PHP Mysqli没有错误,没有查询

[英]PHP Mysqli no errors, no querys

I'm trying to use mysqli instead of mysql queries, and it's not working. 我正在尝试使用mysqli而不是mysql查询,但是它不起作用。 Mysqli: Mysqli的:

$mysqli->connect($db1['host'], $db1['user'], $db1['password'], $db1['database']);
if ($mysqli->connect_errno) {
        printf("Connect failed: %s\n", $mysqli->connect_error);
        exit();
    }

no errors. 没有错误。 If I try this query: 如果我尝试以下查询:

if(isset($_POST['username']))
{
    $password = $_POST['p']; 

    $random_salt = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true));

    $password = hash('sha512', $password.$random_salt);

    if ($insert_stmt = $mysqli->prepare("INSERT INTO members (username, email, password, salt) VALUES (?, ?, ?, ?)")) {    
       $insert_stmt->bind_param('ssss', $username, $email, $password, $random_salt); 

       $insert_stmt->execute();
    }
    echo "Success";
}

nothing is inserted, no errors with mysqli error. 什么都没有插入,mysqli错误没有错误。 Table structure is correct, and it says success. 表结构正确,说明成功。 I'm new to mysqli, I'm used to mysql. 我是mysqli的新手,我已经习惯了mysql。 Is there something I've missed with error reporting? 错误报告有什么我想念的吗?

Better try this, its from php manual 最好尝试一下,它来自php manual

<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) 
{
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli- >connect_error;
}

you have to do it like this way 你必须这样做

$password = hash('sha512', $password.$random_salt);

$insert_stmt = $mysqli->prepare("INSERT INTO members (username, email, password, salt) VALUES (?, ?, ?, ?)");     
$insert_stmt->bind_param('ssss', $username, $email, $password, $random_salt); 

if($insert_stmt->execute())
{
    echo "Success";
}

Actually you are first checking the query and after that binding the params, because of that it was just displaying Success . 实际上,您首先要检查查询,然后绑定参数,因为它只是显示Success

You could do the $stmt->execute(); 您可以执行$ stmt-> execute(); in an if loop like this: 在这样的if循环中:

if ($stmt->execute()){

    $result = $stmt->affected_rows;

    if ($result) { echo "yay" } else { echo "boo"; }
}
else {
    printf("Execute error: %s", $stmt->error);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM