Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 您的SQL语法有错误;检查与您的MariaDB服务器相对应的手册&x27';文章';其中(`title`LI)_Php_Mysql - Fatal编程技术网

Php 您的SQL语法有错误;检查与您的MariaDB服务器相对应的手册&x27';文章';其中(`title`LI)

Php 您的SQL语法有错误;检查与您的MariaDB服务器相对应的手册&x27';文章';其中(`title`LI),php,mysql,Php,Mysql,我的代码有这个问题 您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在第1行的“articles”(其中(`title`像'%EPA%')或(`text`像'%EPA%')附近使用的正确语法 这是我的代码: $raw_results = mysqli_query($conn, "SELECT * FROM 'articles' WHERE (`title` LIKE '%".$query."%') OR (`text` LIKE '%".$q

我的代码有这个问题

您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在第1行的“articles”(其中(`title`像'%EPA%')或(`text`像'%EPA%')附近使用的正确语法

这是我的代码:

 $raw_results = mysqli_query($conn, "SELECT * FROM 'articles'
            WHERE (`title` LIKE '%".$query."%') OR (`text` LIKE '%".$query."%')") or die(mysqli_error($conn));

该错误的直接原因可能是您将表名
articles
放在单引号中。我们可以解决这个问题,然后继续,但现在是了解预处理语句的好时机,预处理语句可以解决代码中的另一个问题。查询字符串的另一个主要问题是您正在通过字符串concaten进行构建这可能会导致来自外部的人可能会注入恶意的SQL片段,以便运行可能不希望运行的命令。请考虑代码的更新版本:

$query = '%'.$query.'%';
$stmt = $mysqli->prepare("SELECT * FROM articles WHERE title LIKE ? OR text LIKE ?");
$stmt->bind_param("ss", $query, $query);
$stmt->execute();
$raw_results = $stmt->get_result();

该错误的直接原因可能是您将表名
articles
放在单引号中。我们可以解决这个问题,然后继续,但现在是了解预处理语句的好时机,预处理语句可以解决代码中的另一个问题。查询字符串的另一个主要问题是您正在通过字符串concaten进行构建这可能会导致来自外部的人可能会注入恶意的SQL片段,以便运行可能不希望运行的命令。请考虑代码的更新版本:

$query = '%'.$query.'%';
$stmt = $mysqli->prepare("SELECT * FROM articles WHERE title LIKE ? OR text LIKE ?");
$stmt->bind_param("ss", $query, $query);
$stmt->execute();
$raw_results = $stmt->get_result();

请告诉我们最终的查询,而不是构建它的代码。警告:你对SQL注入很脆弱。攻击者能够轻易地对你的数据库运行任意命令。你应该强烈地考虑使用和参数化查询。你可以使用PDO或MySQLI来做这件事。告诉我们最终的查询。而不是构建它的代码。警告:你是。攻击者能够轻松地运行对数据库的任意命令。您应该强烈考虑使用和参数化查询。您可以使用PDO或MySQLI这样做。