【问题标题】:syntax error, unexpected 'mysqli_num_rows' [duplicate]语法错误,意外的“mysqli_num_rows”[重复]
【发布时间】:2016-09-23 15:26:59
【问题描述】:

这是我的代码:

$u_check = mysql_query("SELECT username FROM users WHERE usnername='$un' '");
$check = mysqli_num_rows ( $u_check );

我收到以下错误:

警告:mysqli_num_rows() 期望参数 1 为 mysqli_result, 第 27 行 C:\xampp\htdocs\Socially\index.php 中给出的布尔值

我无法解决这个问题,我正在使用教程来帮助我做一些事情,这是他输入的内容。我真的很想修复它,这样我就可以继续我想做的事情了;我正在做数据库,因为我正在制作登录和注册表单。请帮忙。当我在 phpmyadmin 的 sql 选项卡中键入 $check = mysqli_num_rows ( $u_check ); 时,我收到以下消息:

静态分析:

在分析过程中发现了 3 个错误。
意想不到的性格。 (位置 0 的“$”附近)
意想不到的性格。 (靠近位置 25 的“$”)
出乎意料的声明开头。 (在位置 0 的“$”附近)

SQL 查询:
$check = mysqli_num_rows($u_check)

MySQL 说:文档

#1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以了解正确的语法使用

在第 1 行的“$check = mysqli_num_rows($u_check)”附近

【问题讨论】:

  • 你不是把mysql_*和mysqli_*混在一起吗?
  • 而且似乎还混淆了 PHP 和 SQL。
  • 我在你的第一行看到一个错字:username vs usnername。这可能会引发错误并导致布尔值。
  • 我不太了解 PHP,但该教程似乎在鼓励一种允许 SQL 注入的编码风格(例如,“username='$un'”):stackoverflow.com/questions/60174/…

标签: php mysql phpmyadmin xampp


【解决方案1】:

您将MySQLMySQLi 混合在一起

如果您使用的是MySQL

$u_check = mysql_query("SELECT username FROM users WHERE usnername='$un'");
$check = mysql_num_rows ($u_check);

如果您使用的是MySQLi

$u_check = mysql_query($con, "SELECT username FROM users WHERE usnername='$un'");
$check = mysqli_num_rows ($u_check);

(如果您使用的是MySQL,请将$con 替换为您的数据库参数)

也有可能您在查询中指的是username,而不是usnername

【讨论】:

  • 谢谢!我很感激。
  • 我遇到了另一个错误。当我输入这个: else { $pswd = md5($pswd); $pswd2 = md5($pswd2); $query = mysql_query("INSERT INTO users VALUES (' ', '$un', '$fn', '$ln', '$em','$pswd','$d','0')") ;我收到一条错误消息: Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\Socially\index.php on line 39
  • 你能发布第 39 行吗?
  • 您的错误指向 index.php 的第 39 行。你能把那行贴在这里吗?
  • 所以将 else 行粘贴到其他地方?我把它移了一点,仍然有错误。你想把我出错的那行粘贴在这里吗?我找到你了
【解决方案2】:

替换:

$u_check = mysql_query("SELECT username FROM users WHERE usnername='$un' '");

与:

$u_check = mysqli_query("SELECT username FROM users WHERE usnername = $un");

你总是把变量放在双引号里,否则脚本会认为你写的是一个字符串,而不是一个变量。

【讨论】:

  • 那么 $check = mysql_num_rows ( $u_check );当我只是将更正粘贴到您给我的内容时,我不断收到一条错误消息:警告:mysqli_query() 需要至少 2 个参数,1 在第 26 行的 C:\xampp\htdocs\Socially\index.php 中给出警告:mysqli_num_rows () 期望参数 1 为 mysqli_result,在第 27 行的 C:\xampp\htdocs\Socially\index.php 中给出 null
  • 那个 SQL 是无效的,$un 是一个字符串,所以当它到达数据库时需要被引用。 mysqli_query 需要一个连接字符串。
猜你喜欢
  • 2015-12-22
  • 2015-09-09
  • 2016-04-11
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
相关资源
最近更新 更多