尝试执行预准备语句时出现PHP错误

时间:2015-10-20 04:48:59

标签: php database prepared-statement

我正在学习PHP并且最近学习了有关预处理语句的知识,因此我尝试修改了我可以在不使用预准备语句的情况下插入数据库的代码。

在修改我的代码后,似乎我无法使其工作,我已经按照W3Schools指南但我似乎无法找到我的错误,知道我做错了什么?

另外,如何回显我的$ stmt的结果,以便我可以显示我的错误?因为if(!$stmt){echo $stmt->error;}似乎不起作用。

<?php    
$servername = "myServer";
$username = "myUsername";
$password = "myPw";
$dbname = "myDB";

$globalID=intval($_GET['globalID']);
$nombreEsposo=$_GET['nombreEsposo'];
$trabajoEsposo=$_GET['nombreEsposa'];
$nombreEsposa=$_GET['trabajoEsposo'];
$trabajoEsposa=$_GET['nombreEsposa'];
$domicilio=$_GET['domicilio'];
$colonia=$_GET['colonia'];
$localidad=$_GET['localidad'];
$telefono=intval($_GET['telefono']);
$miembrosFamilia=intval($_GET['miembrosFamilia']);
$numeroHombres=intval($_GET['numeroHombres']);
$numeroMujeres=intval($_GET['numeroMujeres']);
$numeroEstudiantes=intval($_GET['numeroEstudiantes']);
$miembrosTrabajan=intval($_GET['miembrosTrabajan']);


// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$stmt = $conn->prepare("INSERT INTO datosfamilia (idReporte,nombreEsposo,trabajoEsposo,nombreEsposa,trabajoEsposa,domicilio,colonia,localidad,telefono,miembrosFamilia,numHombres,numMujeres,numEstudiantes,numTrabajan)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

$stmt->bind_param("isssssssiiiiii",$globalID,$nombreEsposo,$trabajoEsposo,$nombreEsposa,$trabajoEsposa,$domicilio,$colonia,$localidad,$telefono,$miembrosFamilia,$numHombres,$numMujeres,$numeroEstudiantes,$numTrabajan);

$stmt->execute();
$stmt->close();
$conn->close();
?>

2 个答案:

答案 0 :(得分:1)

$ stmt是一个对象,您无法对其进行虚假评估以测试查询是否有效。

打印$ stmt-&gt;错误的值。

print($stmt->error);

http://php.net/manual/en/mysqli-stmt.error.php

答案 1 :(得分:0)

您可以尝试使用此方法来测试您的查询是否成功执行。

$result = $stmt->execute();
if($result){
   echo 'success';
}else{
   echo 'error';
}