我正在处理一个表单,其中有可能让用户在要提交给数据库的字符串中使用非法/特殊字符.我想在字符串中转义/否定这些字符,并且一直在使用htmlspecialchars().但是,有更好/更快的方法吗?
我想检查我准备好的查询是否已返回空,而不必进入循环.这是我尝试使用的代码:
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->fetchALL或PDO->fetch收到同样的错误.我应该采取不同的做法吗?
从我读过的内容中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?
可能重复:
如何在C++中将用户输入验证为double?
我是C++的新手,我有一个功能,我希望用户输入一个double值.我如何确保输入的值是正确的数据类型?另外,如何处理错误?目前这就是我的全部:
if(cin >> radius){}else{}
Run Code Online (Sandbox Code Playgroud)
我使用`try {} catch(){},但我不认为这是解决这个问题的正确方法.任何帮助,将不胜感激.
有没有办法确保$_POST我的代码收到的数据来自我的表格而不是外部影响.基本上我不希望有人能够欺骗$_POST一个普遍可用的页面,如帐户创建.任何用户都可以访问帐户创建页面,但我想确保只有我的account_creation表单提交的数据才会被处理.
我唯一能想到的是启动a $_SESSION,然后使用隐藏输入将session_id提供给表单.在$ _POST时,隐藏输入的值将与当前session_id匹配.
如果有更好的方法来实现这个结果?如果有,我期待听到它.
我想根据表单中的选择将表单提交到不同的地方.我最初计划将所有内容发送到中央文件/位置,并让它确定下一步要去哪里.但是,如果可以的话,我想不做这个额外的步骤.
如果用户想要创建/编辑/删除元素,请转到第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) 我期待从另一个字符串中搜索并替换已知字符串.我应该使用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()是最简单和/或最快的方法.
我是新手使用程序,似乎无法让我的工作.我正在使用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)
如果一个程序存在,那么另一个程序不存在?我究竟做错了什么.
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) php ×6
mysql ×3
forms ×2
sql ×2
action ×1
c++ ×1
cin ×1
clone ×1
fatal-error ×1
function ×1
html ×1
lastinsertid ×1
pdo ×1
regex ×1
session ×1
str-replace ×1
validation ×1