当前位置: 首页 > 知识库问答 >
问题:

PHP代码中的错误

赏光霁
2023-03-14

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

错误:

警告:mysqli\u real\u escape\u string()要求参数1为mysqli,布尔值在第9行的C:\xampp\htdocs\331002.php中给出

警告:mysqli\u real\u escape\u string()要求参数1为mysqli,布尔值在第10行的C:\xampp\htdocs\331002.php中给出

警告:mysqli\u real\u escape\u string()要求参数1为mysqli,布尔值在第11行的C:\xampp\htdocs\331002.php中给出

注意:未定义索引:第12行C:\xampp\htdocs\331002.php中的empID

警告:mysqli\u real\u escape\u string()要求参数1为mysqli,布尔值在第12行的C:\xampp\htdocs\331002.php中给出

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

警告:mysqli_error()要求参数1为mysqli,布尔值在第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个答案

淳于升
2023-03-14

您的问题位于脚本的顶部:

$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());
}
霍浩皛
2023-03-14

该消息清楚地告诉您,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();
}
常睿范
2023-03-14

通常的“检查连接”模式如下:

<?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\u real\u escape\u string需要一个您似乎没有的有效连接。

 类似资料:
  • 当我试图在windows上设置一个PHP环境(使用wamp)来使用Amazon PHP SDK时,当我试图运行一个示例测试时,我得到以下错误: 我已经添加了以下行到我的php.ini 这是我使用此VBS脚本创建的证书的位置 我也重新启动了WAMP服务。

  • 我有一个表格,可以很好地上传很多图像文件,大小也不一样。 但是有些图像没有上传到服务器。 问题图像具有空的$\u文件[name][tmp\u name]和$\u文件[name][error]==8 同时其他图像(文件大小较大或较小)正确上传。 你有什么想法吗? 谢谢

  • 我想格式化目录中的php文件,使代码看起来整洁可读。我知道如何通过eclipse php实现这一点,但它们是一种通过代码一次性完成多个文件的方法吗?

  • PHP代码的编译 PHP是解析型高级语言,事实上从Zend内核的角度来看PHP就是一个普通的C程序,它有main函数,我们写的PHP代码是这个程序的输入,然后经过内核的处理输出结果,内核将PHP代码"翻译"为C程序可识别的过程就是PHP的编译。 那么这个"翻译"过程具体都有哪些操作呢? C程序在编译时将一行行代码编译为机器码,每一个操作都认为是一条机器指令,这些指令写入到编译后的二进制程序中,执行

  • 我试图得到Sonarqube代码,代码复盖率和重复指标显示新的PHP代码添加。我可以看到添加的新代码的代码问题/代码气味。但是没有显示代码重复的计数(我甚至添加了几行重复的代码,以确保获得度量标准时有重复的行)。 下面是我的工作环境 null null 我没有看到很多关于如何获得新代码添加的报告的文档。在这方面的任何帮助都是非常感谢的。 谢谢。

  • 1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件导致删除数据库失败 1010:不能删除数据目录导致删除数据库失败 1011:删除数据库文件失败 1012:不能读取系统表中的记录 1020:记录已被其他用户修改 1021:硬盘剩余空间不足,请加大硬盘可用空间 1022:关键字重复,更改记录失败