mysqli_stmt无法转换为字符串

时间:2016-06-21 09:32:27

标签: php mysql phpmyadmin

将数据插入MySQL时遇到问题。这是错误,我找不到解决方案。 以下是phpmyadmin阵营和某些名字:

PHPMYADMIN - NAME:

  1. 电子邮件 - >电子邮件
  2. 密码 - > PASS1
  3. nome - >诺姆
  4. data_de_nascimeto - >数据
  5. pais - >派斯
  6. contribuinte - > n_contribuinte
  7. endereco - >莫娜达
  8. codpostal - > codpostal
  9. localidade - > localidade
  10. Register.php:(<form action="registo.php" method="get">

    <button type="submit" name="submit">Enviar</button>
    </form>    
    <?php
                    if(isset($_GET['submit'])){
                    $date = mysql_real_escape_string($_GET['data']);
                    $date = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
                    $inst=mysqli_prepare($connect,"INSERT INTO cliente(email, password, nome, pais, contribuinte, endereco, codpostal, localidade, data_de_nascimento) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
                    $pw_hash=password_hash($_GET['pass1'], PASSWORD_DEFAULT);
                    $inst->bind_param("ssssissss", $_GET['email'], $pw_hash, $GET_['nome'], $_GET['pais'], $GET_['n_contribuinte'], $GET_['morada'], $GET_['codpostal'], $GET_['localidade'], $date);
                    if($inst->execute()==TRUE){
                        echo '<p>Registo efetuado com sucesso</p>';
                    }
                    else print_r($inst);
    
                    }
    ?>
    

    编辑 :( print_r($inst);

    mysqli_stmt Object 
    ( 
        [affected_rows] => -1 
        [insert_id] => 0 
        [num_rows] => 0 
        [param_count] => 9 
        [field_count] => 0 
        [errno] => 1048 
        [error] => Column 'nome' cannot be null 
        [error_list] => Array( 
                                [0] => Array( 
                                                [errno] => 1048 
                                                [sqlstate] => 23000 
                                                [error] => Column 'nome' cannot be null 
                                            ) 
                             ) 
        [sqlstate] => 23000 
        [id] => 1 
    )
    

    但名字是输入字符串。

1 个答案:

答案 0 :(得分:1)

从我看到的是您的代码的bind_param部分中有拼写错误。

你有什么:

$inst->bind_param("ssssissss", $_GET['email'], $pw_hash, $GET_['nome'], $_GET['pais'], $GET_['n_contribuinte'], $GET_['morada'], $GET_['codpostal'], $GET_['localidade'], $date);

您正在呼叫$GET_['nome']而不是$_GET['nome']。请注意错误位置的下划线。这就是为什么价值不被吸引的原因。

$GET_['n_contribuinte']$GET_['morada']$GET_['codpostal']$GET_['localidade']相同。