PHP代码中的错误

时间:2014-09-27 17:52:45

标签: php mysql apache mysqli

我是第一次做PHP编码。我收到了以下错误:

错误:

  

警告:mysqli_real_escape_string()期望参数1为mysqli,   在第9行的C:\ xampp \ htdocs \ 331002.php中给出的布尔值

     

警告:mysqli_real_escape_string()期望参数1为mysqli,   在第10行的C:\ xampp \ htdocs \ 331002.php中给出的布尔值

     

警告:mysqli_real_escape_string()期望参数1为mysqli,   在第11行的C:\ xampp \ htdocs \ 331002.php中给出的布尔值

     

注意:未定义索引:c:\ xampp \ htdocs \ 331002.php中的empID在线   12

     

警告:mysqli_real_escape_string()期望参数1为mysqli,   在第12行的C:\ xampp \ htdocs \ 331002.php中给出的布尔值

     

警告:mysqli_query()期望参数1为mysqli,boolean   在第17行的C:\ xampp \ htdocs \ 331002.php中给出

     

警告:mysqli_error()期望参数1为mysqli,boolean   在第18行的C:\ xampp \ htdocs \ 331002.php中给出

这是我的代码:

<?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);
?>

3 个答案:

答案 0 :(得分: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 :(得分:1)

该消息清楚地告诉您mysqli_real_escape_string的第一个参数是布尔值的数据类型。如果您不了解数据类型之间的差异,我建议您查阅它们,了解它们对于使用任何语言进行编程都是必不可少的。如果您查看文档,您将看到它&#34; mysqli_connect()或mysqli_init()&#34;返回的链接标识符。

您对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();
}

答案 2 :(得分: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,或者至少跳过数据库交互,因为它无法继续数据库事务:

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