我觉得这个问题很傻,但这不是我可以谷歌这个.
叫什么`角色?如果它没有显示,它是用于带有markdown的内联代码的字符.此外,在大多数键盘上,它共享密钥~.
我喜欢这三个答案所以我把它变成了CW而不是接受
我在sql server 2008中添加了一个字段,它将列名放在括号中[column2],但是其他列名没有括号.括号是什么意思?
这个专栏是 [macro-writer]
我应该删除减号并用下划线替换?
正如主题所示,我希望能够使用.NET(实际上与哪种语言无关)和SQL Server将表名作为参数传递.
我知道如何为值,例如做这个command.Parameters.AddWithValue("whatever", whatever)用@whatever在查询中表示参数.问题是我希望能够在查询的其他部分(例如列和表名)中执行此操作.
这不是一个理想的情况,但它是我必须使用的,它不太容易SQL注入,因为只有使用代码的人可以设置这些表名而不是最终用户.但它很乱.
那么,我问的可能是什么?
编辑:为了明确说明SQL注入,表格名称仅由源代码传递,具体取决于具体情况.开发人员指定了这一点.开发人员无论如何都可以访问数据库层,所以我问的原因不是安全性,而是为了使代码更清晰.
我有一个类似的功能
function getInfoById($id, $info) {
}
Run Code Online (Sandbox Code Playgroud)
我的想法是有一个查询 "SELECT $info FROM table WHERE id = $id"
这不适用于PDO,因为您无法转义列名称.我也不是真的想使用,"SELECT *"因为不会返回更大的结果集并使用更多的内存?
我正在做网络安全的一些研究,我的文章的修改者说:
"应该很清楚,为了避免SQL注入,应用程序应该使用预准备语句,存储过程和转义输入"
我的问题是:其中一种方法是不够的?好吧,准备好的语句或存储过程比简单的转义更好,但如果我使用PDO,为什么我应该转义输入或有一个存储过程?这有意义吗?
我正在做一个mysql查询,如:
Select * from "User";
Run Code Online (Sandbox Code Playgroud)
它返回:
Select * from "User";
Run Code Online (Sandbox Code Playgroud)
错误是在双引号中,我可以保持select语句,并使mysql处理双引号?
谢谢
我通过a运行所有整数(int)Integer,以便在我的查询字符串中使用它们.
我还通过这个功能代码运行我的字符串: -
if(!get_magic_quotes_gpc()) {
$string = mysql_real_escape_string($string);
}
$pattern = array("\\'", "\\\"", "\\\\", "\\0");
$replace = array("", "", "", "");
if(preg_match("/[\\\\'\"\\0]/", str_replace($pattern, $replace, $string))) $string = addslashes($string);
$cleanedString = str_replace('%','',$string);
Run Code Online (Sandbox Code Playgroud)
我显然返回$ cleaningString变量.现在我替换%字符,因为它是mySQL的通配符,如果用户插入它们,它可能会减慢我的查询速度(或使它们返回不正确的数据).我应该关注mySQL还有其他特殊字符吗?
在第二个注释中,我的搜索和替换之后是否有任何错误或多余mysql_real_escape_string?我在第一次出发时从一个网站上得到它(如果我没记错的话)它说除了转义字符串之外你还必须使用这个搜索/替换.看起来它试图删除任何以前转义的注入字符?
这个函数在这里 http://davidwalsh.name/backup-mysql-database-php
已经漂浮在互联网上一段时间,并且非常有名,但它在标准的mysql中.有没有人有相同但在PDO?如果没有,是否有人想制作一个?它是否有可能,我在某处读到PDO没有做SHOW CREATE TABLE - 是吗?
最后,有人可以解释一下这个功能和使用SELECT*INTO OUTFILE之间的区别吗?
(请不要将此标记为包含太多问题,它们都是紧密相关的,并且我确定答案对许多人都有用)
按照我最近的问题从最后一项中选择信息并加入总金额,我在生成表时遇到了一些内存问题
我有两张桌子sales1,sales2像这样:
id | 日期| 客户| 拍卖
使用此表定义:
CREATE TABLE sales (
id int auto_increment primary key,
dates date,
customer int,
sale int
);
Run Code Online (Sandbox Code Playgroud)
sales1并且sales2具有相同的定义,但sales2有sale=-1在各个领域.客户可以在任何一个,一个或两个表中.两个表都有大约300.000条记录和比此处所示更多的字段(大约50个字段).他们是InnoDB.
我想为每个客户选择:
我使用的查询是:
SELECT a.customer, count(a.sale), max_sale
FROM sales a
INNER JOIN (SELECT customer, sale max_sale
from sales x where dates = (select max(dates)
from sales y
where x.customer = y.customer
and y.sale > 0
)
)b
ON a.customer = …Run Code Online (Sandbox Code Playgroud) UPDATE files
SET filepath = REPLACE(filepath, `sites/somedomain.com/files/`, `sites/someotherdomain.com/files/`);
Run Code Online (Sandbox Code Playgroud)
我有一个名为files的表,其中包含一个名为filepath的字段.MySQL返回此错误:Unknown column 'sites/somedomain.com/files/' in 'field list'
我试图运行以下查询,但我不确定我的应该是不是,$ form_id =记录的列,$ user_id是名为cf_id的记录的主键.
$ querydate将在稍后的脚本中回显,因为它从记录中拉出等于$ form_id和$ user_id的日期.
$querydate = mysql_query("SELECT '$form_id' FROM email_history WHERE cf_id = '$user_id'") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
编辑>>>>>>
在尝试了下面的一些解决方案之后,它似乎工作正常,但不是将日期存储在表单名称下,而是我得到了回声,所以我不确定现在发生了什么::资源ID#120:资源id#121:资源ID#122:资源ID#123
该表的设置类似于以下内容:
[USER_ID] [FORM_ID1212212] [FORM_ID1212112]
[1] [2-1-2012] [2-1-2012]
[2] [1-1-2012] [1-1-2012]
Run Code Online (Sandbox Code Playgroud) 好吧,我有我的数据库,一个字段调用int,我在C#上创建了一个更新'int'和其他一些字段的程序,所有这些都很好,直到int字段说出语法错误.我希望SQL将int表示为字段的名称而不是关键字.非常感谢你.
mysql ×6
sql ×6
php ×4
pdo ×2
sql-server ×2
.net ×1
ascii ×1
backup ×1
c# ×1
character ×1
database ×1
optimization ×1
parameters ×1
performance ×1
punctuation ×1
quotes ×1
security ×1
syntax ×1
terminology ×1