在为精确找到Django ORM顺序的解决方案的过程中,我创建了一个自定义的django Func:
from django.db.models import Func
class Position(Func):
function = 'POSITION'
template = "%(function)s(LOWER('%(substring)s') in LOWER(%(expressions)s))"
template_sqlite = "instr(lower(%(expressions)s), lower('%(substring)s'))"
def __init__(self, expression, substring):
super(Position, self).__init__(expression, substring=substring)
def as_sqlite(self, compiler, connection):
return self.as_sql(compiler, connection, template=self.template_sqlite)
Run Code Online (Sandbox Code Playgroud)
其工作原理如下:
class A(models.Model):
title = models.CharField(max_length=30)
data = ['Port 2', 'port 1', 'A port', 'Bport', 'Endport']
for title in data:
A.objects.create(title=title)
search = 'port'
qs = A.objects.filter(
title__icontains=search
).annotate(
pos=Position('title', search)
).order_by('pos').values_list('title', flat=True)
# result is
# ['Port 2', 'port …Run Code Online (Sandbox Code Playgroud) 我想使用参数进行查询,如下所示:
SELECT * FROM MATABLE
WHERE MT_ID IN (368134, 181956)
Run Code Online (Sandbox Code Playgroud)
所以我想到这个
SELECT * FROM MATABLE
WHERE MT_ID IN (:MYPARAM)
Run Code Online (Sandbox Code Playgroud)
但它不起作用......
有没有办法做到这一点 ?
我实际上使用的是IBX和Firebird 2.1
我不知道IN子句中有多少参数.
我正在研究Jasper Reports,我的查询使用SQL'IN'谓词.
SELECT customer_name AS NAME,
id_customer AS ID
FROM customer
WHERE customer_role IN ($P{roles})
Run Code Online (Sandbox Code Playgroud)
这里role参数可以有1个或多个整数值,并在生成jasper报告时动态决定.
任何人都可以帮助我如何通过Java程序动态设置'roles'参数的值.
我已经做了很多阅读,但仍然不理解100%SQL注入的发生方式!
我想从那些知道基于我的例子的SQL注入的具体例子中看到它,因此它可以被复制,测试和修复.我试过SQL注入我的代码而不能,所以我希望有人来证明我的意思!
1.我认为SQL注入只能通过POST或GET方法进行,这意味着在网站上它应该是帖子形式,例如'注册或搜索'或查询如'search.php?tags = love'?
说这可以注入以下具有POST方法的代码吗?
$name = trim($_POST['username']);
$mail = trim($_POST['email']);
$password = trim($_POST['password ']);
if ($errors == "false") {
$sql =
"INSERT INTO
clients
SET
name='" . mysql_real_escape_string($name) . "',
mail='" . mysql_real_escape_string($mail) . "',
password='" . mysql_real_escape_string(sha1($password)) . "'";
$connection->execute($sql);
}
Run Code Online (Sandbox Code Playgroud)
2.另一个有GET方法: rate.php?like&videoID=250&userID=30
$sql =
"SELECT
videoID
FROM
likes
WHERE
videoID = '" .mysql_real_escape_string($videoID). "' AND UID = '" .mysql_real_escape_string($userID). "' LIMIT 1";
$connection->execute($sql);
Run Code Online (Sandbox Code Playgroud)
请帮助那些对主题感到自由的人,但请使用具体的例子.
提前谢谢,
伊利亚
<?php
include "config.php";
class Users extends Config {
public function login($username, $password) {
try {
$this->db->beginTransaction();
$stmt = $this->db->prepare("SELECT `username`, `password` FROM `users` WHERE `username` = ? AND `password` = ? LIMIT 1");
$stmt->execute(array($username, $password));
if($stmt->rowCount == 1) {
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
header("Location: index.php?p=loggedin");
exit();
}
} else {
header("Location: index.php?p=false");
exit();
}
$this->db->commit();
} catch(PDOException $ex) {
$this->db->rollBack();
echo $ex->getMessage();
}
}
}
$users = new Users();
?>
Run Code Online (Sandbox Code Playgroud)
如您所见,我的代码有两种header()方法,其中一种方法重定向到登录页面,而另一种方法重定向到错误页面.
我相信据我所知,我的脚本应该根据我的输入重新定向到登录页面,这是正确的,但它的行为方式是出乎意料的.
它会重定向到错误页面而不是登录页面.请看一看,告诉我它不起作用的原因?谢谢!此外,如果您发现我的代码中存在任何缺陷,请随意提出一些批评,因为我希望改善自己.非常感谢.
我有一个充满输入文本的表,它们看起来像这样:
<input type='text' value='{Value}' id='{Model.ID}' class='ChckNumber' />
Run Code Online (Sandbox Code Playgroud)
类名称根据它是什么列而不同,Model.ID根据行而不同,并且列基于列和行是不同的.
当输入文本变得没有聚焦时,我调用api来更新用户输入的值,如下所示:
$("input[type=text]").on("focusout", function () {
var id = $(this).attr("id");
var column = $(this).attr("class");
var value = $(this).val();
if (typeof id !== "undefined" && typeof column !== "undefined" && typeof value !== "undefined") {
$.ajax({
url: "/api/Action/UpdateTable?id=" + id + "&column=" + column + "&value=" + value,
type: "GET",
error: function (request, status, error) {
InsertLogEntry(request.responseText + " From API Call /api/Action/UpdateTable");
},
success: function (data) {
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
这是API控制器的调用:
[HttpGet] …Run Code Online (Sandbox Code Playgroud) 我想使用PHP和Zend-Framework获取并播放存储在MySql Db中的WAV文件.但我无法这样做.我想分两步完成:1.将BLOB转换为.wav文件2.在新窗口中播放.wav文件.
请帮我............
提前致谢......
我目前有一个cookie设置如下:
setcookie("username",$username,time()+3600*24*5);
Run Code Online (Sandbox Code Playgroud)
我将如何清除该cookie的值,以便不再填写用户的用户名?
我把它清除如下:
setcookie("username","",time()-60000);
Run Code Online (Sandbox Code Playgroud)
用户的用户名仍然会出现.
HTML表单:
<?php
session_start();
$username = NULL;
$password = NULL;
if(isset($_SESSION['username'])){
$username = $_COOKIE['username'];
$password = $_COOKIE['password'];
}
?>
<html>
<title>Login</title>
<body bgcolor='#000000'>
<font color="white">
<H2><div align='center'>Login</div></H2>
<form align='center' action='login.php' method='POST'>
Username: <input type='text' name='username' value='<?$_COOKIE['username']?>'><br \>
Password: <input type='password' name='password' value='<?$password?>'><br \>
Remember Me <input type='checkbox' name='remember' value='rememberme'><br \>
<input type='submit' value='Login'>
</form>
</font>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
用于处理表单的PHP脚本:
<?php
session_start();
$username = $_POST['username'];
$password = $_POST['password'];
//Hash password in a new variable
$password2 = md5($password); …Run Code Online (Sandbox Code Playgroud) 序幕:
这是SO中经常出现的问题:
并且可以应用于上述以及以下内容:
我想在SO文档上撰写一个例子,但是自2017年8月8日关闭以来,我将按照这个广泛赞成和讨论的元回答的建议,并将我的例子写成一个自我回答的帖子.
当然,我也很乐意看到任何不同的方法!
题:
的Django/GeoDjango内置有一些数据库功能,如Lower()或MakeValid()它可以像这样使用:
Author.objects.create(name='Margaret Smith')
author = Author.objects.annotate(name_lower=Lower('name')).get()
print(author.name_lower)
Run Code Online (Sandbox Code Playgroud)
有没有办法根据现有的数据库函数使用和/或创建自己的自定义数据库函数,如:
Position() (MySQL的)TRIM() (SQLite的)ST_MakePoint() (PostgreSQL与PostGIS)如何在Django/GeoDjango ORM中应用/使用这些功能?
我有4个MySQL表,通过FOREIGN KEY相互依赖。
请检查以下表结构的架构:
CREATE DATABASE IF NOT EXISTS courses
CHARACTER SET latin1
COLLATE latin1_bin;
CREATE TABLE IF NOT EXISTS courses.institution
(
icode INT UNSIGNED NOT NULL AUTO_INCREMENT,
iname VARCHAR(255) NOT NULL,
PRIMARY KEY (icode),
UNIQUE (iname)
)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS courses.cities
(
ccode INT UNSIGNED NOT NULL AUTO_INCREMENT,
cname VARCHAR(255) NOT NULL,
PRIMARY KEY (ccode),
UNIQUE (cname)
)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS courses.skills
(
scode INT UNSIGNED NOT NULL …Run Code Online (Sandbox Code Playgroud)