2014-09-27 62 views
2

我正在做PHP编码的第一次。我得到了以下错误:在PHP代码中的错误

错误:

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, boolean given in C:\xampp\htdocs\331002.php on line 9

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, boolean given in C:\xampp\htdocs\331002.php on line 10

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, boolean given in C:\xampp\htdocs\331002.php on line 11

Notice: Undefined index: empID in C:\xampp\htdocs\331002.php on line 12

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, boolean given in C:\xampp\htdocs\331002.php on line 12

Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\xampp\htdocs\331002.php on line 17

Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in C:\xampp\htdocs\331002.php on line 18

这里是我的代码:

<?php 
$con=mysqli_connect("localhost","root","root","student"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

// escape variables for security 
$FName = mysqli_real_escape_string($con, $_POST['firstName']); 
$LName = mysqli_real_escape_string($con, $_POST['lastName']); 
$Salary = mysqli_real_escape_string($con, $_POST['salary']); 
$ID = mysqli_real_escape_string($con, $_POST['empID']); 

$sql="INSERT INTO PersonInfo (FName, LName, empID, Salary) 
VALUES ('$FName', '$LName','$ID','$Salary')"; 

if (!mysqli_query($con,$sql)) { 
    die('Error: ' . mysqli_error($con)); 
} 
echo "1 record added"; 

mysqli_close($con); 
?> 
+1

我猜mysqli_connect()返回错误状态(这是一个布尔值,而不是一个mysqli对象)。您可以通过执行'$ con = mysqli_connect(“localhost”,“root”,“root”,“student”)或者die(“Connection error:”。mysqli_error($ con))来轻松测试;' – Oliver 2014-09-27 17:58:24

+0

您有错误建立mysqli对象($ con) – Ormoz 2014-09-27 18:00:57

回答

3

通常的 “检查连接” 模式是这样的:

<?php 
$con=mysqli_connect("localhost","root","root","student"); 
// Check connection 
if (false === $con) { 
    // die will "finish" the script 
    die("Failed to connect to MySQL: " . mysqli_connect_error()); 
} 

mysqli_real_escape_string需要有效的连接,您似乎没有。

1

该消息明确告诉您mysqli_real_escape_string的第一个参数是布尔型的数据类型。如果您不知道数据类型之间的差异,我建议您查看它们,了解它们对于使用任何语言进行编程都非常重要。如果你检查文档,你会发现它需要“mysqli_connect()或mysqli_init()返回的链接标识符”。

你对mysqli_connect()的调用返回false,你想弄清楚为什么,并且当它返回false时处理大小写。猜猜有一个连接错误。

甚至有一个展示这个PHP手册中的页面上例如:

$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 
+0

Thanx你们所有人..那工作.. :) – MukulAgr 2014-09-27 18:12:55

1

你的问题就出在你的脚本的顶部:

$con=mysqli_connect("localhost","root","root","student"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

// escape variables for security 
$FName = mysqli_real_escape_string($con, $_POST['firstName']); 

您已检查了的mysqli连接,但是如果出现连接错误,您的脚本就会回应并继续。如果存在连接错误,该脚本应该die,或至少跳过DB相互作用,因为它不能与数据库事务继续:

$con = mysqli_connect("example.com", "user", "password", "database"); 
if (mysqli_connect_errno($con)) { 
    die("Failed to connect to MySQL: " . mysqli_connect_error()); 
}