相关疑难解决方法(0)

206
推荐指数
5
解决办法
15万
查看次数

什么叫'''字符?

我觉得这个问题很傻,但这不是我可以谷歌这个.

叫什么`角色?如果它没有显示,它是用于带有markdown的内联代码的字符.此外,在大多数键盘上,它共享密钥~.

我喜欢这三个答案所以我把它变成了CW而不是接受

ascii terminology character special-characters punctuation

20
推荐指数
4
解决办法
5011
查看次数

sql server:括号在列名周围意味着什么?

我在sql server 2008中添加了一个字段,它将列名放在括号中[column2],但是其他列名没有括号.括号是什么意思?

这个专栏是 [macro-writer]

我应该删除减号并用下划线替换?

sql-server

19
推荐指数
3
解决办法
4万
查看次数

.NET/SQL中的参数化表名?

正如主题所示,我希望能够使用.NET(实际上与哪种语言无关)和SQL Server将表名作为参数传递.

我知道如何为值,例如做这个command.Parameters.AddWithValue("whatever", whatever)@whatever在查询中表示参数.问题是我希望能够在查询的其他部分(例如列和表名)中执行此操作.

这不是一个理想的情况,但它是我必须使用的,它不太容易SQL注入,因为只有使用代码的人可以设置这些表名而不是最终用户.但它很乱.

那么,我问的可能是什么?

编辑:为了明确说明SQL注入,表格名称仅由源代码传递,具体取决于具体情况.开发人员指定了这一点.开发人员无论如何都可以访问数据库层,所以我问的原因不是安全性,而是为了使代码更清晰.

.net sql sql-server parameters

10
推荐指数
2
解决办法
7203
查看次数

使用PDO转义列名称

我有一个类似的功能

function getInfoById($id, $info) {

}
Run Code Online (Sandbox Code Playgroud)

我的想法是有一个查询 "SELECT $info FROM table WHERE id = $id"

这不适用于PDO,因为您无法转义列名称.我也不是真的想使用,"SELECT *"因为不会返回更大的结果集并使用更多的内存?

php pdo

8
推荐指数
2
解决办法
8095
查看次数

防止SQL注入 - 如果使用预准备语句,为什么要逃避输入?

我正在做网络安全的一些研究,我的文章的修改者说:

"应该很清楚,为了避免SQL注入,应用程序应该使用预准备语句,存储过程和转义输入"

我的问题是:其中一种方法是不够的?好吧,准备好的语句或存储过程比简单的转义更好,但如果我使用PDO,为什么我应该转义输入或有一个存储过程?这有意义吗?

sql stored-procedures sql-injection prepared-statement

6
推荐指数
1
解决办法
2037
查看次数

mysql双引号表名

我正在做一个mysql查询,如:

Select * from "User";
Run Code Online (Sandbox Code Playgroud)

它返回:

Select * from "User";
Run Code Online (Sandbox Code Playgroud)

错误是在双引号中,我可以保持select语句,并使mysql处理双引号?

谢谢

mysql double-quotes

5
推荐指数
1
解决办法
7049
查看次数

MySQL/PHP - 转义可能减慢数据库速度(或使其意外执行)的字符

我通过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?我在第一次出发时从一个网站上得到它(如果我没记错的话)它说除了转义字符串之外你还必须使用这个搜索/替换.看起来它试图删除任何以前转义的注入字符?

php mysql security sql-injection

4
推荐指数
1
解决办法
2852
查看次数

PDO MySQL备份功能

这个函数在这里 http://davidwalsh.name/backup-mysql-database-php

已经漂浮在互联网上一段时间,并且非常有名,但它在标准的mysql中.有没有人有相同但在PDO?如果没有,是否有人想制作一个?它是否有可能,我在某处读到PDO没有做SHOW CREATE TABLE - 是吗?

最后,有人可以解释一下这个功能和使用SELECT*INTO OUTFILE之间的区别吗?

(请不要将此标记为包含太多问题,它们都是紧密相关的,并且我确定答案对许多人都有用)

php mysql backup pdo database-backups

4
推荐指数
3
解决办法
1万
查看次数

MySQL巨大的表JOIN使数据库崩溃

按照我最近的问题从最后一项中选择信息并加入总金额,我在生成表时遇到了一些内存问题

我有两张桌子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具有相同的定义,但sales2sale=-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)

mysql sql optimization performance greatest-n-per-group

3
推荐指数
1
解决办法
2027
查看次数

这个SQL语法有什么问题?

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'

mysql sql

1
推荐指数
1
解决办法
103
查看次数

我在哪里需要在我的MYSQL查询中使用反引号或引号?

我试图运行以下查询,但我不确定我的应该是不是,$ 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)

php mysql

1
推荐指数
1
解决办法
3151
查看次数

在SQL语句中使用语言关键字

好吧,我有我的数据库,一个字段调用int,我在C#上创建了一个更新'int'和其他一些字段的程序,所有这些都很好,直到int字段说出语法错误.我希望SQL将int表示为字段的名称而不是关键字.非常感谢你.

c# sql syntax error-handling

-3
推荐指数
1
解决办法
229
查看次数