Php 在SQL查询中使用WHERE子句会导致错误
如果我使用下面的代码,它是有效的Php 在SQL查询中使用WHERE子句会导致错误,php,sql,Php,Sql,如果我使用下面的代码,它是有效的 $query = 'SELECT * FROM messages ORDER BY date DESC LIMIT ? , ?'; 但如果我使用WHERE子句来过滤确切的用户数据,它会显示错误 $query = 'SELECT * FROM messages WHERE member_name='.$userid.' ORDER BY date DESC LIMIT ? , ?'; 下面是全部错误 Fatal error: Uncaught Error:
$query = 'SELECT * FROM messages ORDER BY date DESC LIMIT ? , ?';
但如果我使用WHERE子句来过滤确切的用户数据,它会显示错误
$query = 'SELECT * FROM messages WHERE member_name='.$userid.' ORDER BY date DESC LIMIT ? , ?';
下面是全部错误
Fatal error: Uncaught Error: Call to a member function execute() on bool in /home/customer/www/sitename.com/public_html/user/notifications/lib/DataSource.php:82 Stack trace: #0 /home/customer/www/sitename.com/public_html/user/notifications/Model/Pagination.php(41): Phppot\DataSource->select('SELECT * FROM m...', 'ii', Array) #1 /home/customer/www/sitename.com/public_html/user/notifications/index.php(7): Phppot\Pagination->getPage() #2 {main} thrown in /home/customer/www/sitename.com/public_html/user/notifications/lib/DataSource.php on line 82
有趣的是,我在另一个网站的WHERE子句中使用了相同的脚本。
但什么会导致这样的错误呢?
$userid字符串有值,已经检查过,所有包含/连接的php文件也在工作
代码来自用以下方法解决它
$query = "SELECT * FROM messages WHERE member_name='$userid' ORDER BY date DESC LIMIT ? , ?";
请将您的域名成员名称更改为其他名称。 我认为member_name是一个类似mysql中的member的函数。
更改字段名并重试。除非您收到MySQL的错误消息,告诉您该如何回答您的问题,否则不要这样做?我在那个网站上找不到给定的代码。您共享的代码除了显示变量定义外,也没有显示任何其他内容-是否有更多的代码要共享?不过,请注意,您的第二个查询已打开,可以进行SQL注入。它不应该这样使用,尽管这仍然是非常脆弱的代码。有没有什么好的理由像那样注入$userid而不是通过参数?