小编Gri*_*iff的帖子

SQLSTATE [HY093]:参数号无效:未定义参数

// BUILD VALUES
$count = count($matches);
for($i = 0; $i < $count; ++$i) {
    $values[] = '(?)';
}
// INSERT INTO DATABASE
$q = $this -> dbc -> prepare("INSERT INTO hashes (hash) VALUES " . implode(', ', $values) . " ON DUPLICATE KEY UPDATE hash = hash");
$q -> execute($matches);
Run Code Online (Sandbox Code Playgroud)

上面的代码失败,出现以下错误

SQLSTATE [HY093]:参数号无效:未定义参数

虽然count($matches) == count($values)在执行之前就被调用了?

这里发生了什么?

php mysql pdo

29
推荐指数
2
解决办法
11万
查看次数

正则表达式检查至少3个字符?

我有这个正则表达式只允许字母数字字符.

如何检查字符串是否至少包含3个字母字符.

我现在的正则表达式,

if(!/^[a-zA-Z0-9]+$/.test(val))
Run Code Online (Sandbox Code Playgroud)

我想强制执行字符串以确保至少有3个连续的字母字符;

111 // false
aaa1 // true
11a // false
bbc // true
1a1aa // false
Run Code Online (Sandbox Code Playgroud)

regex

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

获取ON DUPLICATE KEY UPDATE多次插入时插入的行数?

我有一个非常大的表,主键是BINARY(20).

该表有大约1700万行.cron作业每小时尝试使用ON_DUPLICATE_KEY_UPDATE语法在此表中插入多达50,000个新条目.

cronjob中的每个插入都有1,000个值(多个插入).如何从此查询中获取插入表中的行数?我之前和之后都不能进行行计数,因为有大约1700万行并且查询太贵了.

在手册中,mysql说插入一行,受影响的行数是,1并且对于更新的字段2,这意味着在我的1000 INSERT ON DUPLICATE KEY UPDATE查询中,我可能会影响1000到2000之间的行,但是我没办法告诉我从这个号码插入了多少条记录?

我怎么能克服这个?

谢谢

mysql

9
推荐指数
2
解决办法
2384
查看次数

使用PHP从1.3GB文本文件中提取文本的最佳方法?

我有一个1.3GB的文本文件,我需要从PHP中提取一些信息.我已经对它进行了研究,并提出了一些不同的方法来做我需要做的事情,但总是稍微澄清一下哪种方法最好或者另一种更好的方法存在我不知道的事情?

我在文本文件中需要的信息只是每行的前40个字符,文件中有大约1700万行.每行40个字符将插入数据库中.

我的方法如下;

// REMOVE TIME LIMIT
set_time_limit(0);
// REMOVE MEMORY LIMIT
ini_set('memory_limit', '-1');
// OPEN FILE
$handle = @fopen('C:\Users\Carl\Downloads\test.txt', 'r');
if($handle) {
    while(($buffer = fgets($handle)) !== false) {
        $insert[] = substr($buffer, 0, 40);
    }
    if(!feof($handle)) {
        // END OF FILE
    }
    fclose($handle);
}
Run Code Online (Sandbox Code Playgroud)

以上是每次读取每行并获取数据,我将所有数据库插入排序,在事务中一次执行50次插入.

下一个方法与上面的方法相同但是file()在执行foreach获取数据之前调用将所有行存储在数组中?我不确定这种方法,因为数组基本上有超过1700万的值.

另一种方法是仅提取文件的一部分,用未使用的数据重写文件,并在执行该部分之后使用header调用重新调用脚本?

在以最快速有效的方式完成这项工作方面,最好的方法是什么?或者有没有更好的方法来解决这个问题?

此外,我计划将此脚本与wamp一起使用,但是在测试中运行它时,即使将脚本时间设置为0,也会导致超时问题.有没有办法可以执行脚本运行而无需通过浏览器访问页面?

php file

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

mysql和DECIMAL存储空间?

根据我对 mysql 文档中的手册的理解DECIMAL,它指出九个数字的每个倍数需要 4 个字节,以下是剩余的数字;

number of digits leftover  |   bytes

0                          |   0
1                          |   1
2                          |   1
3                          |   2
4                          |   2
5                          |   3
6                          |   3
7                          |   4
8                          |   4
Run Code Online (Sandbox Code Playgroud)

那么 adecimal(12,6)等于总存储空间中的 6 个字节吗?

我知道小数部分将始终等于 6 位数字,因为填充了零,但整数部分对于列而言并非如此,DECIMAL(12,6)存储是按行还是在列定义时计算值?

例子

    DECIMAL(12,6)
 1: 178.999999 // 3 digits for integer part so total would be 5 bytes?
 2: 0.880000 // 1 digits for integer part so total would be 4 …
Run Code Online (Sandbox Code Playgroud)

mysql decimal

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

PHP正则表达式无法使其正常工作?

我正在尝试制作一个符合某个标准的正则表达式,但我无法按照我想要的方式运行它.

我现在的正则表达式是

'/S(?:[0-9]){2}E(?:[0-9]){2}/i'
Run Code Online (Sandbox Code Playgroud)

我想要它做的是符合以下标准

一个 S

至少一位数 0-9

可选的数字 0-9

一个 E

至少一位数 0-9

可选的数字 0-9

如果可能的话,我也希望它能将双数字与单个数字相匹配,我通过跟踪互联网上的教程来制作正则表达式,但我认为我遗漏了一些东西.

谢谢...

php regex

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

PHP函数构建默认变量?

我正在尝试构建一个具有2个默认值的函数,但在某些情况下我只需要提供第一个参数,而其他只需要第二个参数.在PHP中有没有办法可以做到这一点,或者有没有办法做我想要的标准?

function ex($a, $b = null, $c = null) {
    ....
}

ex($a, $b, $c) // WORKS FINE

ex($a) // WORKS FINE

ex($a, $b) // WORKS FINE

ex($a, $c) // WANT VAR C TO BE VAR C IN THE FUNCTION AND NOT VAR B
Run Code Online (Sandbox Code Playgroud)

谢谢

php function

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

Sha 1 哈希值及其长度与 Bit Torrent 协议(磁铁)?

我正在抓取网站信息,其中涉及获取磁力链接的 sha1 哈希值。

我用一个简单的方法获得了所有磁力链接preg_match_all,但在结果中我得到了奇怪的结果,我知道十六进制形式的磁力哈希值有 40 个字符长,但我也得到了返回 32 个字符长的字符串的结果,其中包含其他非十六进制值。

我的结果中有两个例子,首先是磁力链接内的正常 40 十六进制哈希值,

array
    0 => string 'F5AD2D170C033736FD987106F04C3ABD6DF41D14' (length=40)
Run Code Online (Sandbox Code Playgroud)

还有其他奇怪的结果,我不明白哈希值是 32 个非十六进制值,

array
    0 => string 'VPR33QQM3L6BFU5FGOZXMBNORAFFSZWW' (length=32)
Run Code Online (Sandbox Code Playgroud)

哈希是否以某种方式打包?我知道它还没有完成,pack('H*', $hash)因为它返回哈希的二进制?正如我测试的那样,磁力链接确实有效。

更重要的是,您可以在该网站上看到这些哈希值的使用

http://eztv.it

将鼠标悬停在磁力链接上并查看磁力哈希。

谢谢

php hash sha1 packed

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

这些类型的网站的后端如何工作?

我正在建立自己的洪流网站,经过一些研究后我发现很多网站包括这两个:

大多数页面都是静态的,不会动态生成(因为页面结束.html).考虑到这一点,这对我来说是有意义的,因为网站加载速度要快得多,而不是每次用户加载页面时都必须转到数据库.

假设以下内容我是否正确?

  • 页面是静态的.

  • 页面经常更新.

  • 页面由类似PHP或任何其他编程语言自动生成.

这样做的原因是为了减轻数据库的压力(必须非常大)并使用户的网站加载速度更快?

请参考以下示例:

我猜这些页面必须是静态的,因为哈希不是放在一个GET变量中,而是指向一个特定的页面.您还会注意到页面上还有动态元素,例如最近的搜索(位于底部)和可用的注释.

如果我的想法是正确的.那么网站如何处理更新页面的评论?这是否意味着每当有人发表评论时,页面都必须作为一个整体进行更新?

html php

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

从对象Javascript中调用setInterval?

我正在尝试使用Jvascript制作游戏引擎.到目前为止,我有:

function gameEngine() {

    this.canvas = $('canvas')[0];
    this.ctx = this.canvas.getContext('2d');
    this.framerate = 20;

    this.resetCanvas = function() {
        this.ctx.fillStyle = 'red';
        this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
    };

    this.loop = function() {
        this.resetCanvas();
    };

    this.run = function() {
        setInterval(this.loop, this.framerate);
    };
}

new gameEngine();
Run Code Online (Sandbox Code Playgroud)

但画布没有出现; 为什么?

javascript canvas object game-engine

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

标签 统计

php ×6

mysql ×3

regex ×2

canvas ×1

decimal ×1

file ×1

function ×1

game-engine ×1

hash ×1

html ×1

javascript ×1

object ×1

packed ×1

pdo ×1

sha1 ×1