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

如何获取select查询工作sqli

明正德
2023-03-14

我想用php中的sqli对我的users表执行select查询。出于安全原因(sql注入),我想使用参数来实现。我还想将结果存储在一个php变量中。

这是我的代码:

$conn变量填写正确。

$login = $_POST['username'];

//Check if username is available
/*Line44*/ $stmt = $conn->prepare("SELECT login FROM users WHERE login = ?");
/*Line45*/ $stmt->bind_param('s', $login);
           $result = $stmt->execute();

if ($result->num_rows > 0) 
{
    echo "This username is in use.";
}
else
{    
    //Add account to database
    $stmt = $conn->prepare("INSERT INTO users (login, password, email, gender) VALUES (?, ?, ?, ?)");
    $stmt->bind_param('ssss', $login, $md5pass, $email, $gender);
    $stmt->execute();
    $stmt->close();
    echo "<font color=\"#254117;\">Your account is succesfully geregistered! <br />U can now login!</font>";
}

我得到这个错误:

警告:mysqli::prepare()[mysqli.prepare]:无法在第44行的C:\xampp\htdocs\cammerta\registerer.php中获取mysqli

致命错误:在C:\xampp\htdocs\cammerta\registerer.php的第45行对非对象调用成员函数bind_param()

我希望有人能提供一个解决方案,并向我解释我做错了什么。提前谢谢!

共有2个答案

宣瀚
2023-03-14

$stmt=$conn-

if ($stmt = $conn->prepare('your query')) {
    $stmt->bind_param(...);

}
else {
    printf("Error=: %s\n", $conn->error);
}
东方夕
2023-03-14
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);
$stmt->execute();

1.请在phpmyadmin或任何程序中运行查询

2.也许你没有设置变量$登录,$md5pass,$email,$gender

 类似资料:
  • 问题内容: 我到处都在寻找解释,以了解选择语句中的子查询如何工作,但由于解释非常模糊,我仍然无法理解该概念。 我想知道您如何在oracle的select语句中使用子查询以及它的确切输出。 例如,如果我有一个查询,希望显示这些表中员工的姓名及其管理的个人资料数量 员工(EmpName,EmpId) Profile(ProfileId,…,EmpId) 如何使用子查询? 我当时想在select语句中需

  • 我是Elasticsearch新手,对匹配查询的工作方式感到困惑。我有以下映射: 我批量导入了以下文档 我验证了所有文档都已成功加载。然后我执行匹配查询: 它只返回#1文档。我在这里感到困惑。为什么它不返回所有三个文档?我应该使用什么查询来返回这三个文档,因为它们在字段中都有“quiet”根单词? 谢谢和问候。

  • select 数据库查询select($table, $columns, $where) table [string] 表名. columns [string/array] 要查询的字段名. where (optional) [array] 查询的条件.select($table, $join, $columns, $where) table [string] 表名. join [array] 多

  • select 数据库查询select($table, $columns, $where) table [string] 表名. columns [string/array] 要查询的字段名. where (optional) [array] 查询的条件.select($table, $join, $columns, $where) table [string] 表名. join [array] 多

  • 问题内容: 我问这个问题有点傻,因为我似乎是世界上唯一一个不了解这个问题的人,但是无论如何,这都是可行的。我将以Python为例。当我使用原始SQL查询(通常使用ORM)时,我会使用参数化,例如使用SQLite的以下示例: 方法A: 我知道这可行,我知道这是通常推荐的方式。SQL注入易受攻击的方式可以执行以下操作: 方法B: 到目前为止,我可以告诉我了解SQL注入,如本Wikipedia文章中所述

  • http://localhost:8983/solr/prashant1/spell?q=blakc&spellcheck=on&wt=json 结果 但我需要与select查询相同的结果,它不能从SOLR管理中工作。 有没有设置和步骤要做?