mysqli_stmt 无法转换为字符串
mysqli_stmt could not be converted to string
我在向 MySQL 中插入数据时遇到问题。这是错误,我找不到解决方案。
phpmyadmin 阵营和某些名称位于 :
PHPMYADMIN - 名称:
- 电子邮件 -> 电子邮件
- 密码 -> pass1
- nome -> nome
- data_de_nascimeto -> 数据
- 派斯 -> 派斯
- 贡献 -> n_contribuinte
- endereco -> 莫拉达
- codpostal -> codpostal
- 本地化 -> 本地化
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
)
但是名称在输入时带有字符串。
据我所知,您的代码 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']
相同。
我在向 MySQL 中插入数据时遇到问题。这是错误,我找不到解决方案。 phpmyadmin 阵营和某些名称位于 :
PHPMYADMIN - 名称:
- 电子邮件 -> 电子邮件
- 密码 -> pass1
- nome -> nome
- data_de_nascimeto -> 数据
- 派斯 -> 派斯
- 贡献 -> n_contribuinte
- endereco -> 莫拉达
- codpostal -> codpostal
- 本地化 -> 本地化
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
)
但是名称在输入时带有字符串。
据我所知,您的代码 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']
相同。