小编The*_*tor的帖子

允许MySQL中为空值的唯一约束

我有一个存储产品代码的字段.代码是唯一的,但有些产品根本没有代码.我不能发明代码,因为那些是提供者代码.

这种约束在MySQL中是否可行?

我是一个存储过程和触发器的菜鸟,所以如果解决方案涉及其中一个,请耐心等待.

更新:列不是空的.这就是我无法做到这一点的原因.

mysql database-design constraints

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

如何知道MySQLnd是否是主动驱动程序?

也许这是一个显而易见的问题,但我想确定.

我怎么知道MySQLnd是否是主动驱动程序?

我正在运行PHP 5.3和MySQL 5.1.37.在phpinfo()中列出了mysqlnd,但只有这个我不能确定我是否使用MySQLnd或旧驱动程序...

提取phpinfo()输出

mysql
MySQL Support   enabled
Active Persistent Links     0
Active Links    0
Client API version  mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27 $ 

mysqli
MysqlI Support  enabled
Client API library version  mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27 $
Active Persistent Links     0
Inactive Persistent Links   0
Active Links    26 

mysqlnd
mysqlnd enabled
Version     mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27 $ 

PDO
PDO support enabled
PDO drivers     mysql

pdo_mysql
PDO Driver for MySQL    enabled …
Run Code Online (Sandbox Code Playgroud)

php mysql mysqlnd

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

在MySQL中检测utf8中断的字符

我有一个数据库,其中包含分散在几个表中的一堆破坏的utf8字符.字符列表不是很广泛AFAIK(áéíúóÁÉÍÓÚÑñ)

修复给定的表格非常简单

update orderItem set itemName=replace(itemName,'á','á');
Run Code Online (Sandbox Code Playgroud)

但我无法找到一种检测破碎字符的方法.如果我做的事情

SELECT * FROM TABLE WHERE field LIKE "%Ã%";
Run Code Online (Sandbox Code Playgroud)

由于整理(Ã= a),我得到几乎所有的字段.到目前为止,所有破碎的字符都以"Ã"开头.数据库是西班牙语,因此不使用此特定字符

到目前为止我已经破碎的字符列表是

á = á
é = é
í- = í
ó = ó
ñ = ñ
á = Á
Run Code Online (Sandbox Code Playgroud)

知道如何让这个SELECT按预期工作吗?(二分搜索或类似的东西)

mysql utf-8

37
推荐指数
8
解决办法
6万
查看次数

Mysql密码哈希方法旧vs新

我正在尝试从位于slicehost(两个不同的托管公司)的服务器中的php脚本连接到dreamhost的mysql服务器.我需要这样做,所以我可以在slicehost将新数据传输到dreamhost.使用转储不是一个选项,因为表结构是不同的,我只需要传输一小部分数据(100-200每日记录)问题是我在slicehost使用新的MySQL密码哈希方法,而dreamhost使用旧的,所以我得到

$link = mysql_connect($mysqlHost, $mysqlUser, $mysqlPass, FALSE); 

Warning: mysql_connect() [function.mysql-connect]: OK packet 6 bytes shorter than expected
Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using old authentication
Warning: mysql_query() [function.mysql-query]: Access denied for user 'nodari'@'localhost' (using password: NO) 
Run Code Online (Sandbox Code Playgroud)

事实:

  • 我需要在slicehost继续使用新方法,我不能使用较旧的php版本/库
  • 数据库太大,无法每天使用转储进行传输
  • 即使我这样做,表格也有不同的结构
  • 我需要每天只复制它的一小部分(只有当天的变化,100-200条记录)
  • 由于表格如此不同,我需要使用php作为规范化数据的桥梁
  • 已经谷歌搜索了它
  • 已经与两位支持人员进行了交谈

对我来说更明显的选择是在dreamhost上开始使用新的MySQL密码哈希方法,但它们不会改变它,我不是root,所以我不能自己做.

任何疯狂的想法?

通过VolkerK消化:

mysql> SET SESSION old_passwords=0;
Query OK, 0 rows affected (0.01 sec)

mysql> SELECT @@global.old_passwords,@@session.old_passwords, Length(PASSWORD('abc'));
+------------------------+-------------------------+-------------------------+
| @@global.old_passwords | @@session.old_passwords | Length(PASSWORD('abc')) |
+------------------------+-------------------------+-------------------------+
|                      1 |                       0 | …
Run Code Online (Sandbox Code Playgroud)

php mysql password-hash mysql-error-1044

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

jQuery在慢速操作期间显示"加载"

我试图在使用jQuery的慢速操作期间显示一个小的加载图像,但无法正确.这是一张有数千行的大表.当我选中"mostrarArticulosDeReferencia"复选框时,它会从这些行中删除"隐藏"类.此操作需要几秒钟,我想提供一些反馈."loading"是一个带有小动画gif的div

这是完整的代码

jQuery(document).ready(function() {
jQuery("#mostrarArticulosDeReferencia").click(function(event){
    if( jQuery("#mostrarArticulosDeReferencia").attr("checked") ) {
        jQuery("#loading").show(); //not showing
        jQuery("#listadoArticulos tr.r").removeClass("hidden"); //slow operation
        jQuery("#loading").hide();
    } else {
        jQuery("#loading").show();  //not showing
        jQuery("#listadoArticulos tr.r").addClass("hidden");  //slow operation
        jQuery("#loading").hide();
    }
});
jQuery("#loading").hide();
});
Run Code Online (Sandbox Code Playgroud)

看起来jquery正在"优化"这3行

        jQuery("#loading").show(); //not showing
        jQuery("#listadoArticulos tr.r").removeClass("hidden");
        jQuery("#loading").hide();
Run Code Online (Sandbox Code Playgroud)

永远不会显示加载div.有任何想法吗?

奖励:有一种更快的方式来做这个显示/隐藏的事情吗?发现切换速度慢.

更新:我试过这个

    jQuery("#mostrarArticulosDeReferencia").click(function(event){
    if( jQuery("#mostrarArticulosDeReferencia").attr("checked") ) {
            jQuery("#loading").show(); //not showing
            jQuery("#listadoArticulos tr.r").removeClass("hidden"); //slow operation
            setTimeout("jQuery('#loading').hide()", 1000);
    } else {
            jQuery("#loading").show();  //not showing
            jQuery("#listadoArticulos tr.r").addClass("hidden");  //slow operation
            setTimeout("jQuery('#loading').hide()", 1000);
    }
});
Run Code Online (Sandbox Code Playgroud)

这就是我得到的

  1. 点击复选框
  2. 在2/3秒内没有任何事情发生(处理)
  3. 页面得到更新
  4. 加载div在瞬间出现

更新2:我有一个有效的解决方案.但为什么我必须使用setTimeout才能使它工作超出我的意义......

    jQuery("#mostrarArticulosDeReferencia").click(function(event){
    if( jQuery("#mostrarArticulosDeReferencia").attr("checked") ) …
Run Code Online (Sandbox Code Playgroud)

performance jquery show-hide

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

从一个查询中的两个表中删除行

我有两个表:orders和orders_items.两者共享字段orderID.

我想删除orderID = 500的两个表中的所有行,但我只需要在一个查询中执行此操作.这可能吗?

mysql cascade

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

会话变量可以被欺骗(登录)?

在PHP中:有没有办法让用户伪造一个会话变量?

信任登录系统的会话变量值是否安全?

php security session login

6
推荐指数
2
解决办法
4827
查看次数

memcacheD这没关系?

我是memcached的新手.此代码是否容易受到过期缓存竞争条件的影响?你会如何改进它?

$memcache = new Memcache;
$memcache->connect('127.0.0.1');
$arts = ($memcache===FALSE) ? FALSE : $memcache->get($qparams);
if($arts===FALSE) {
    $arts=fetchdb($q, $qparams);
    $memcache->add($qparams, $arts, MEMCACHE_COMPRESSED, 60*60*24*3);
}
if($arts<>FALSE) {
    // do stuff
} else {
    // empty dataset
}
Run Code Online (Sandbox Code Playgroud)
  • $ qparams包含查询的参数,因此我将其用作密钥.
  • $ arts get是一个包含每个项目所需的所有字段的数组.

假设查询X得到100行.排在第50行之后的另一个过程(假设零售价格上涨).

  • 我该怎么办缓存?
  • 我如何知道#50行是否被缓存?
  • 我应该使缓存中的所有条目无效吗?(听起来有点矫枉过正).

php memcached

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

jQuery选择输入[type = image]兄弟姐妹

我正在尝试将这些表单转换为ajax(示例)

<table>
<tr>
            <td>Prov</td><td>Cod</td><td>Nombre</td><td>Precio</td><td>Stock1</td><td></td><td></td>
        </tr>

                <tr class="o d">
                    <td class="provName">Karabitian</td>

                    <td class="cod d">494011135</td>
                    <td class="name" id="artID13899">Eje del. m505  y4ch98040 comp. s/cierre Shimano</td>
                    <td class="alignright">$&nbsp;69.00</td>
                    <td class="center">-</td>
                    <td class="add">
                <nobr>

                    <form name="formularioAgregaItem" action="script.php" method="POST" autocomplete="off" class="add">
                        <fieldset>
                            <input name="function" value="cartAddByBarcode" type="hidden">
                            <input name="barcode" value="KAR005834" type="hidden">
                            <input name="orderID" value="23333" type="hidden">
                            <input name="qty" id="qty13899" size="2" maxlength="3" class="i" value="15" type="text">
                            <input src="add_16x16.gif" alt="agregar a la orden" type="image">
                        </fieldset>
                    </form>

                </nobr>
                </td>
                </tr>

                <tr class="o d">
                    <td class="provName">Karabitian</td>

                    <td class="cod d">494011137</td>
                    <td class="name" id="artID13900">Eje del. …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-selectors

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

在一系列操作之后,如何将元素重置为原始状态?

经过一堆动画,添加类和设置CSS样式.是否有一种简单的方法可以将元素重置为原始服务器交付状态?

css jquery elements

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