2015-10-20 73 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'; 
}