2015-10-19 68 views
2

所以我有一個使用異步方法調用PHP文件的JavaScript函數。這是我的代碼

的JavaScript

var xmlHttp = new XMLHttpRequest(); 
xmlHttp.onreadystatechange = function() { 
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200) 
     callback (xmlHttp.responseText); 
} 
xmlHttp.open("GET", "http://127.0.0.1/formulario/insertReporte.php?"+'nombreAlumno='+nombreAlumno+'&noCta='+noCta+'&semestre='+semestre, true); 
xmlHttp.send(null); 

這裏是我的PHP文件

<?php 

$servername = "myServerName"; 
$username = "myUserName"; 
$password = "myPassWord"; 
$dbname = "myDb"; 

$nombreAlumno = $_GET['nombreAlumno']; 
$noCta = intval($_GET['noCta']); 
$semestre = intval($_GET['semestre']); 

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

$sql = "INSERT INTO infoalumno (nombreAlumno,noCta,noSemestre) 
VALUES ($nombreAlumno,$noCta,$semestre)"; 

if ($conn->query($sql) === TRUE) { 
    $last_id = $conn->insert_id; 
    echo $last_id; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 
?> 

我的問題來自於這條線$nombreAlumno = $_GET['nombreAlumno'];,因爲我得到這個錯誤

enter image description here

在我的數據庫中,我的nombreAlumno字段被聲明爲VARCHAR。

我知道我的連接有效,因爲如果我將該行更改爲$nombreAlumno = intval($_GET['nombreAlumno']);,它會將0插入到我的數據庫中。

任何想法我做錯了什麼?

+0

奧馬爾是一個字符串,把它變成「奧馬爾」(單QUOT) – WisdmLabs

回答

3

您需要添加在你的價值的報價。插入之前,還可以使用mysqli_real_escape_string到數據庫,以防止SQL注入

$nombreAlumno=mysqli_real_escape_string($conn, $nombreAlumno); 
$noCta=mysqli_real_escape_string($conn, $noCta); 
$semestre=mysqli_real_escape_string($conn, $semestre); 

$sql = "INSERT INTO infoalumno (nombreAlumno,noCta,noSemestre) 
VALUES ('".$nombreAlumno."','".$noCta."','".$semestre."')"; 
+0

添加我real_escape_string即使我的變量$ noCta和$ semestre是整型? – Omaruchan

+0

是的,爲什麼不!在插入datanase之前總是使用'mysqli_real_escape_string' – Saty

+0

因此,我這樣做了,現在它不會將任何內容插入到數據庫中,也不會引發任何錯誤。 – Omaruchan

0

試試這個

<?php 

$servername = "myServerName"; 
$username = "myUserName"; 
$password = "myPassWord"; 
$dbname = "myDb"; 

$nombreAlumno = $_GET['nombreAlumno']; 
$noCta = intval($_GET['noCta']); 
$semestre = intval($_GET['semestre']); 

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

$sql = "INSERT INTO infoalumno (nombreAlumno,noCta,noSemestre) 
VALUES ('".$nombreAlumno."','".$noCta."','".$semestre."')"; 

if ($conn->query($sql) === TRUE) { 
    $last_id = $conn->insert_id; 
    echo $last_id; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 
?>