小编Bro*_*ias的帖子

在PHP中,当我向数据库提交字符串时,我应该使用htmlspecialchars()处理非法字符还是使用正则表达式?

我正在处理一个表单,其中有可能让用户在要提交给数据库的字符串中使用非法/特殊字符.我想在字符串中转义/否定这些字符,并且一直在使用htmlspecialchars().但是,有更好/更快的方法吗?

php sql-injection special-characters illegal-characters

19
推荐指数
2
解决办法
8138
查看次数

php无法使用empty()返回FATAL ERROR来检查PDO结果是否为空

我想检查我准备好的查询是否已返回空,而不必进入循环.这是我尝试使用的代码:

if(empty($pQuery1->fetch(PDO::FETCH_ASSOC))){}
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,我得到错误:

Fatal error: Can't use method return value in write context

我是否使用PDO->fetchALLPDO->fetch收到同样的错误.我应该采取不同的做法吗?

php pdo fatal-error

14
推荐指数
1
解决办法
2万
查看次数

MySQL和LAST_INSERT_ID()返回错误id的可能性

从我读过的内容中LAST_INSERT_ID()检索要运行的最后一个insert语句的id.如果最后一个insert语句在您的连接上运行,或者最后一个insert在数据库上运行所有连接?我想我要问的是:在繁忙的数据库驱动的网站上,以下代码返回错误ID的可能性有多大,是否有一种方法可以防止其他代码锁定数据库?

INSERT INTO example (string) VALUE ('something');
SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)

PHP mysql_insert_id()是一个更好的解决方案,还是我应该只查询刚刚插入的数据并以这种方式获取id?

mysql lastinsertid

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

c ++,如何验证数据输入是否为正确的数据类型

可能重复:
如何在C++中将用户输入验证为double?

我是C++的新手,我有一个功能,我希望用户输入一个double值.我如何确保输入的值是正确的数据类型?另外,如何处理错误?目前这就是我的全部:

if(cin >> radius){}else{}
Run Code Online (Sandbox Code Playgroud)

我使用`try {} catch(){},但我不认为这是解决这个问题的正确方法.任何帮助,将不胜感激.

c++ cin

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

php __clone()和"浅层克隆"

当__clone()的结果是"浅克隆"时是什么意思?

php clone

7
推荐指数
2
解决办法
1744
查看次数

php如何确保$ _POST数据来自您的表单而不是外部影响?

有没有办法确保$_POST我的代码收到的数据来自我的表格而不是外部影响.基本上我不希望有人能够欺骗$_POST一个普遍可用的页面,如帐户创建.任何用户都可以访问帐户创建页面,但我想确保只有我的account_creation表单提交的数据才会被处理.

我唯一能想到的是启动a $_SESSION,然后使用隐藏输入将session_id提供给表单.在$ _POST时,隐藏输入的值将与当前session_id匹配.

如果有更好的方法来实现这个结果?如果有,我期待听到它.

php forms validation session

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

一个表单可以有多个动作吗?

我想根据表单中的选择将表单提交到不同的地方.我最初计划将所有内容发送到中央文件/位置,并让它确定下一步要去哪里.但是,如果可以的话,我想不做这个额外的步骤.

如果用户想要创建/编辑/删除元素,请转到第1页.
如果用户想要分组/附加元素,请转到第3页.

我正在尝试编写表单生成器.您可以创建/编辑/删除表单,问题和答案.我有完成创建,编辑和删除的所有内容.这些功能在不离开页面的情况下执行,但现在我希望为特定问题分配答案.问题页面和答案页面是分开的.我想要选择一组答案并将一组答案ID(选中的复选框)提交到问题页面,然后将那些ID分配给一个问题.所以基本上创建,编辑和删除功能都是打开而不离开页面,但是assign函数将在不同的页面上执行.

if(empty($delRowID) || empty(updateRowID) || empty($groupRows)) {
    qInsert();
}else{
    if(!empty($delRowID)) qDelete($delRowID);
    if(!empty(updateRowID)) qUpdate($updateRowID);
    if(!empty($groupRows)) {
        submit $groupRows to Question.php;
    }
}
Run Code Online (Sandbox Code Playgroud)

html php forms action

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

PHP,删除已知字符串的最佳选择是什么?

我期待从另一个字符串中搜索并替换已知字符串.我应该使用str_replace()还是preg_replace()?该字符串被替换将类似的东西[+qStr+],[+bqID+]或者[+aID+]它会被搜索类似这样的代码块:

<li> [+qStr+]
   <ol class="mcAlpha">
       <li><input type="radio" name="[+bqID+]" id="[+bqID+]_[+aID+]" value="[+aID+]" /><label for="[+bqID+]_[+aID+]">[+aStr+]</label></li>
   </ol>
</li>
Run Code Online (Sandbox Code Playgroud)

我将使用MySQL查询的结果替换字符串,并且一次执行此操作或类似操作最多200次.哪个函数str_replace()或preg_replace()是最简单和/或最快的方法.

php regex str-replace

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

mysql过程出错ERROR 1304&ERROR 1305

我是新手使用程序,似乎无法让我的工作.我正在使用MySQL v5.1.36并在WAMPP服务器上使用MySQL控制台输入我的代码.如果我去(重新)创建程序.我收到错误#1304(42000).

mysql>  DELIMITER //
mysql>
mysql>  CREATE PROCEDURE modx.getCRID (IN x VARCHAR(255),OUT y INT)
    ->  BEGIN
    ->          DECLARE y INT;
    ->          SELECT id INTO y
    ->          FROM `modx`.coverage_region
    ->          WHERE `coverage_region`.name = x;
    ->  END//
ERROR 1304 (42000): PROCEDURE getCRID already exists
mysql>
mysql>  DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用该过程,则会收到错误#1305(42000).

mysql> USE modx;
Database changed
mysql> SET @crID = modx.getCRID("South East");
ERROR 1305 (42000): FUNCTION modx.getCRID does not exist
Run Code Online (Sandbox Code Playgroud)

如果一个程序存在,那么另一个程序不存在?我究竟做错了什么.

mysql sql stored-procedures

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

Errors with MySQL stored function creation ERROR 1064 & 1327

I am using MySQL v5.1.36 and I am trying to create a stored function using this code.

DELIMITER //
CREATE FUNCTION `modx`.getSTID (x VARCHAR(255)) RETURNS INT DETERMINISTIC
    BEGIN
    DECLARE y INT;
    SELECT id INTO y
    FROM `modx`.coverage_state
    WHERE `coverage_state`.name = x;
    RETURN y;
    END//
Run Code Online (Sandbox Code Playgroud)

When entered into the MySQL Console I get this response.

mysql>  DELIMITER //
mysql>  CREATE FUNCTION `modx`.getSTID (x VARCHAR(255)) RETURNS INT DETERMINISTIC
    ->          BEGIN
    ->          DECLARE y INT;
ERROR 1064 (42000): You have an error in …
Run Code Online (Sandbox Code Playgroud)

mysql sql function mysql-error-1064 mysql-error-1327

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