2015-10-20 85 views
1

我正在学习PHP并最近了解了准备好的语句,所以我尝试修改了一段代码,我可以在不使用准备语句的情况下插入数据库。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(); 
?> 

回答

1

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

改为打印$ stmt-> error的值。

print($stmt->error); 

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

+0

谢谢你,问题是我没有注意到我在写我的一些领域不对我的'bind_param'功能。其中回应'$ stmt'错误确实告诉我。 :d – Omaruchan

0

嗨试试这个方法来测试你的查询是否成功执行或不。

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