我想知道是否有可能,而不是通过jQuery选择器从DOM中选择一个元素,如果我可以创建一个.
例如:
$.create('#hello').insertAfter('#test');
Run Code Online (Sandbox Code Playgroud)
会生成以下内容:
<div id="test">This element already existed in the DOM.</div>
<div id="hello"></div>
Run Code Online (Sandbox Code Playgroud)
或者,更好的是,对于更复杂的操作:
$.create('#test.a.b');
Run Code Online (Sandbox Code Playgroud)
对于:
<div id="test" class="a b"></div>
Run Code Online (Sandbox Code Playgroud)
显然,更复杂的操作如:selected或:nth-child或:not()以及所有这些操作都不需要实现.
有人知道解决方案吗?
谢谢.
好吧,我还是不太懂.我一直在阅读,为了正确地逃避你的MySQL查询,你需要使用mysqli_prepare()和mysqli_bind_param().
我尝试使用这个设置,坦率地说,它有点笨拙.当我不需要再次引用变量时,我会通过引用传递变量,并且只需要更多行代码来完成相同的任务.
我想我只是不知道它们之间的区别:
<?php
$sql = new \MySQLi(...);
$result = $sql->query('
UPDATE `table`
SET
`field` = "'.$sql->real_escape_string($_REQUEST[$field]).'";
');
?>
Run Code Online (Sandbox Code Playgroud)
和
<?php
$sql = new \MySQLi(...);
$stmt = $sql->prepare('
UPDATE `table`
SET
`field` = ?;
');
$value = $_REQUEST[$field];
$stmt->bind_param('s', $value);
$stmt->execute();
$result = $stmt->get_result();
unset($value);
?>
Run Code Online (Sandbox Code Playgroud)
除了更多的代码.
我的意思是,他们是否实现了这一点,以便人们在发送查询之前不会忘记转义值?还是以某种方式更快?
或者当我打算重复使用相同的查询时(因为mysqli_stmt可以重复使用)并在其他情况下使用传统方法,我应该使用此方法吗?
php mysql mysqli mysql-real-escape-string prepared-statement
我知道这似乎太复杂了,但我很困惑.
我有一个页面使用jQuery的post方法向我的API发送一个AJAX POST请求.它们都在同一个域/服务器上.
$.post('api/login.php', {username: 'test', password: 'test'}).done(function (res) {
alert(res.response);
});
Run Code Online (Sandbox Code Playgroud)
API看起来像这样:
<?php
exit (json_encode(array ('response' => print_r($_REQUEST, true))));
Run Code Online (Sandbox Code Playgroud)
这在我的本地WAMP设置中按预期工作,但在Bluehost上,它显示就Array ()好像请求中没有参数.
如果我$.post改为$.get,它接收两个参数就好了.
如果我使用HTML表单并在不使用AJAX的情况下发送数据,它也会按预期工作,例如
<form method="post" action="api/login.php">
<input type="text" name="username" value="test">
<input type="text" name="password" value="test">
<input type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)
我想我已经用尽了我可以创建的测试以试图消除任何其他可能性,它只是归结为一些非常奇怪的东西 - 我的PHP脚本在AJAX请求中没有收到POST字段.
我正在通过 JOIN 查询查询两个表,以确定结果集列中的每一行approved是否为TRUE.
SELECT
`approvals`.`approved`
FROM `sign_ins`
RIGHT JOIN `approvals` ON
`sign_ins`.`user` = `approvals`.`user`;
Run Code Online (Sandbox Code Playgroud)
这将为每个用户返回一个布尔值的结果集,例如
1
0
0
1
1
Run Code Online (Sandbox Code Playgroud)
我的 PHP 代码遍历这些行,并通过返回 false 并在其中任何一个值为0. 但是,我认为如果不需要遍历结果集,它会更加高效和优化;毕竟,我真的只关心一件事:TRUE如果所有行的approved值都是TRUE; 否则,FALSE。
我可以用 MySQL 查询做到这一点吗?
谢谢。
我对如何通过Node.js连接到AWS的ElastiCache Redis感到困惑.我已成功通过node_redis NPM连接到主要主机(001),但我无法使用ioredis的群集功能,因为显然ElastiCache没有实现CLUSTER命令.
我认为必须有另一种方式,但AWS SDK for Node仅具有管理ElastiCache的命令,而不是实际连接到它.
如果不使用CLUSTER,我担心如果主节点出现故障,我的应用程序将无法进行故障转移,因为我无法回退到其他群集.Error: READONLY You can't write against a read only slave.当主交换机时,我也从我的Redis客户端收到错误,我不知道如何优雅地处理.
我是否想过这个?我发现很少有关于使用Node.js使用ElastiCache Redis集群的信息.
amazon-web-services redis node.js amazon-elasticache redis-cluster
一位同事对模块的第一个版本进行了随意的争论.我们想知道0.0.1是否应该是初始版本.我认为0.1.0是正确的第一个版本,因为0.0.1意味着补丁的增量,而补丁意味着先前的版本.所以根据我的理解,必须有0.0.0.
我浏览了http://semver.org docs,它确实说0.1.0通常是初始版本,但是当主要版本也为0时,我没有看到任何规则反对将次要编号设置为0.
有谁知道0.1.0是最低版本是正式规则,还是只是一个约定?
假设我想为“手风琴”(一组可折叠面板)创建一个 UI 组件。父组件控制哪些面板打开的状态,而子面板应该能够读取上下文以确定它们是否打开。
const Accordion = ({ children }) => {
const [openSections, setOpenSections] = useState({})
const isOpen = sectionId => Boolean(openSections[sectionId])
const onToggle = sectionId => () =>
setOpenSections({ ...openSections, [sectionId]: !openSections[sectionId] })
const context = useMemo(() => createContext(), [])
// Can't tell children to use *this* context
return (
<context.Provider value={useMemo(() => ({ isOpen, onToggle }), [isOpen, onToggle])}>
{children}
</context.Provider>
)
}
const AccordionSection = ({ sectionId, title, children }) => {
const { isOpen, onToggle } = …Run Code Online (Sandbox Code Playgroud) 我试图在浏览器中显示PDF - 如果可能的话 - 我知道我可以在Chrome中执行此操作,这是我正在测试的.问题是,每次我尝试时,它都会提示下载.
我正在使用PHP会话,所以我知道有一些无关的标题被发送,所以我打电话header_remove()来重置所有内容.
我将此函数称为显示PDF:
<?php
// For demonstrative purposes
session_start();
if (!isset($_SESSION['auth'])) {
header('Location: login.php');
die;
}
/*
* void viewPDF (Report $report)
* Outputs the PDF of the report
*/
function viewPDF ($report) {
// Tell the browser we are going to serve a PDF file.
$file = dirname(__FILE__).'/../reports/'.$report->id.'.pdf';
// The location of the PDF
if (!file_exists($file)) {
die ('The PDF does not exist.');
// Somehow the file does not exist.
}
header_remove();
// …Run Code Online (Sandbox Code Playgroud) 我想知道是否有一种简单的方法可以检查INSERT语句是否在执行INSERT时由于MySQL字段上的唯一索引而触发冲突.
例如,假设我正在向数据库添加用户,并且username是一个唯一索引:
$sql = new MySQLi(...);
$res = $sql->query('INSERT INTO `users` (`username`) VALUES ("john_galt");');
Run Code Online (Sandbox Code Playgroud)
名为的用户john_galt已存在,因此不会执行INSERT.但是,如何才能以最有意义的错误对用户做出最佳响应(即具有该用户名的用户已经存在;请选择一个唯一的名称.)?
我想到了一些事情,比如检查是否insert_id已设置 - 如果查询生成错误,则不应该这样做.但这个错误可能是任何事情.
类似地,我可以检查是否$sql->error不是空的,除了,这可能是任何东西 - 语法错误,或格式错误的值,或其他什么.显然,我不打算为最终用户打印出实际的MySQL错误.
我能想到的两个解决方案是:
SELECT TRUE FROM ``users`` WHERE ``username`` = "john_galt";以查看数据库中是否已存在用户名,但我觉得我在该字段中添加了一个唯一约束,这样我就不必这样做了 - 否则就会失败.strpos($sql->error, 'Duplicate entry') === 0 - 看起来非常可怕.有没有更好的方法来确定使用PHP的MySQLi类?
根据文档,sails lift将始终尝试使用本地安装的 Sails 模块(即app/node_modules/sails)运行您的应用程序。
但是当我运行时sails console,我可以从堆栈跟踪中看到它正在使用全局安装的 Sails 实例:
at runner (/usr/local/lib/node_modules/sails/node_modules/waterline/lib/waterline/query/validate.js:28:16)
Run Code Online (Sandbox Code Playgroud)
有没有办法强制sails console运行本地安装的 Sails 版本?