我有大型数据库(数百万行),我正在尝试为2个字段的数据类型做出最佳选择.我做的大部分都是varchar或INT.然而,2个领域我想知道Enum是否是最好的方式.
字段1 第一个字段是性别,我的数据目前是"男性"或"女性",或者可能是空白.我最初设置如下:
GENDER VARCHAR(6) NOT NULL
Run Code Online (Sandbox Code Playgroud)
这是最好的方式,还是最好将其设置为:
GENDER ENUM ('Male', 'Female') NOT NULL
Run Code Online (Sandbox Code Playgroud)
我是否需要将其设为NOT NULL以允许空白,或者我是否需要添加空白,即
GENDER ENUM ('Male', 'Female', '') NOT NULL
Run Code Online (Sandbox Code Playgroud)
更何况,我正在考虑将整个领域转换为M或F.
第2场: 除了状态字段外,我还有很多相同的事情要考虑,其中可能包含52个值(50个状态,DC,加空白).
我想最大的问题是 - 所有这些Enum的东西都值得吗?我的数据库有数百万行,所以一切都是一个因素,但我应该只使用VARCHAR(2)作为状态而不是ENUM.
我正在使用投票按钮.
按钮是一个简单的链接,但搜索引擎蜘蛛抓取页面并触发虚假投票.因此,我将其更改为onclick以使其停止.
但是,执行此操作后,按钮仍可正常工作,但鼠标光标不再具有"手形"指针.当你鼠标悬停时它仍然是箭头指针,所以很难说它是一个实际的功能链接.
为了解决这个问题,我添加了一个style ="cursor:default;",我也尝试了style ="cursor:crosshair;" 尝试更改游标行为,但它不起作用.光标始终是指针.
这是我的代码:
<map id="vote_buttons" name="vote_buttons">
<area shape="rect" alt="" coords="5,3,78,43" onClick="window.location='http://www.site.com/page.php?vote=Y'" style="cursor:default;" title="" />
<area shape="rect" alt="" coords="83,3,160,44" onClick="window.location='http://www.site.com/page.php?vote=N'" style="cursor:pointer;" title="" />
<area shape="default" nohref="nohref" alt="" />
</map>
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么让这个鼠标看起来像一只手?
一如既往地感谢您.
我正在学习预处理语句并尝试使用产生多行结果的查询.现在,我只想弄清楚如何确定行数,然后在html中显示该数字.
我准备好的陈述如下:
if($stmt = $mysqli -> prepare("SELECT field1, field2, field3 FROM table WHERE id= ?ORDER BY id ASC"))
{
/* Bind parameters, s - string, b - blob, i - int, etc */
$stmt -> bind_param("i", $id);
$stmt -> execute();
/* Bind results */
$stmt -> bind_result($testfield1, $testfield2, $testfield3);
/* Fetch the value */
$stmt -> fetch();
/* Close statement */
$stmt -> close();
}
Run Code Online (Sandbox Code Playgroud)
我明白我应该先保存结果,然后使用num_rows,如下所示:
$stmt->store_result();
$stmt->num_rows;
Run Code Online (Sandbox Code Playgroud)
但是,当我把那些代码放在那里时,我正在运行并发布页面问题.我甚至无法进入如何显示行数的下一步
所以,问题是:在计算预准备语句中的行数方面我缺少什么,那么我将如何显示它 <?php echo '# rows: '.$WHATGOESHERE;?>
谢谢!!
我有一个非常大的数据库表 - 近2000万条记录.
记录没有唯一的ID号.所以,我插入了新字段.
现在,我想用ID号填充它,增加1,从第一个ID号为10,000,001开始.
仅供参考 - 我在本地计算机上使用WAMP和我拨我的最多次数高达5000秒,为了做到在第一时间上传(历时更拨通了在php.ini和mysql.ini其他几个变量超过10小时!!).
在过去,或者与其他数据库一起,我可能已经将数据导出到excel中,然后掀起一些文本以粘贴回phpmyadmin以更新记录.使用5K记录甚至100K记录时这很好,但这似乎无法容纳2000万条记录.
提前致谢!!
所以我贴了这个!昨天得到了一个完美的答案,需要先运行此代码:ALTER TABLE mytable AUTO_INCREMENT = 10000001;
我运行了好几次,但是在几个小时不工作后重新启动了WAMP.过夜(12小时)后,代码仍未运行.
我想知道我的数据库表大小是否超过了mysql或我的计算机或两者的限制.
但是,我有一种偷偷摸摸的怀疑,正确的索引或其他因素可能会对我的表现产生很大的影响.我知道2000万行是很多行,但它太多了吗?
我对索引知之甚少,除了它们很重要.我试图将它们添加到名称和州字段中,我相信我成功了.
顺便说一下,我正在尝试添加一个唯一的ID字段,这就是我昨天的帖子.
所以,问题是:MySql范围之外的2000万行?如果没有,我是否缺少一个索引或其他一些有助于更好地使用这2000万行的设置?我可以在所有列上放置索引并使其超快吗?
一如既往,提前谢谢......
以下是规格:
我的电脑是XP,运行WAMPSERVER,Win32 NTFS,Intel Duo Core,T9300 @ 2.50GHz,1.17 GHz,1.98 GB或RAM
DB:1表,2000万行表的大小是:数据4.4 Gigs,Indexes 1.3 Gigs,Total 5.8 Gigs
索引在"BUSINESS NAME"和"STATE"字段中设置
表字段是这样的:
`BUSINESS NAME` TEXT NOT NULL,
`ADDRESS` TEXT NOT NULL,
`CITY` TEXT NOT NULL,
`STATE` TEXT NOT NULL,
`ZIP CODE` TEXT NOT NULL,
`COUNTY` TEXT NOT NULL,
`WEB ADDRESS` TEXT NOT NULL,
`PHONE NUMBER` TEXT NOT NULL,
`FAX NUMBER` TEXT NOT NULL,
`CONTACT NAME` TEXT NOT NULL,
`TITLE` …Run Code Online (Sandbox Code Playgroud) 我想将谷歌分析添加到我们的网站,并阅读了一些有关脚本标记放置位置的相互矛盾的信息.
Google表示要将其放在收尾</ head>标记之前:http: //code.google.com/apis/analytics/docs/tracking/asyncTracking.html
我们的网站设计方式,这意味着对每个页面进行编辑.如果我需要这样做,这不是什么大不了的事,但是,我们的网站也使用页眉和页脚包含文件.
这些页眉和页脚文件中包含html代码,一旦页面加载就会落在<body>and </body>标签内.
将脚本添加到页眉或页脚文件会更容易.我只是将它粘贴在那里,它将在每个页面上提供代码.
我的问题是:我可以这样做吗?我可以将脚本片段移动到页脚包含文件中,即使它不是</head>谷歌建议的标签之前吗?
如果我这样做,我会问问题吗?
谢谢!!
我有一个带有 javascript/css 内容框的表格单元格,它会在鼠标悬停时弹出。
页面上有 20 个单元格。一切正常,当您将鼠标悬停在产品链接上时,您会看到内容框。但是,我想在用户可以选择的内容框中放置一个 LINK。因此,弹出框必须保持足够长的时间,以便用户将鼠标悬停在鼠标上以单击链接。
真的,我希望 OnMouseOver 保持打开状态,直到一两秒过去和/或用户 OnMouseOver 的另一个单元格。
我遇到的问题是弹出框没有保持打开状态(由于 OnMouseOut)来单击链接。如果我关闭 OnMouseOut(我尝试过),那么所有弹出框都会保持打开状态,所以这也不起作用。
我的 CSS 看起来像这样:
<style type="text/css" title="">
.NameHighlights {position:relative; }
.NameHighlights div {display: none;}
.NameHighlightsHover {position:relative;}
.NameHighlightsHover div {display:block;position:absolute;width: 15em;top:1.3em;*top:20px;left:70px;z-index:1000;}
</style>
Run Code Online (Sandbox Code Playgroud)
和 html:
<td>
<span class="NameHighlights" onMouseOver="javascript:this.className='NameHighlightsHover'" onMouseOut="javascript:this.className='NameHighlights'">
<a href="product link is here">Product 1</a>
<div>
# of Votes: 123<br>
% Liked<br>
<a href="product review link>See User reviews</a>
</div>
</span>
</td>
Run Code Online (Sandbox Code Playgroud)
那么,如何让弹出框保持打开足够长的时间以单击链接,但如果另一个内容框被激活,它又会消失?
提前致谢。
我的服务器上有6个数据库。
在phpmyadmin中,我可以查看组成数据库的表的列表,并查看诸如记录数,表名,表类型等内容。它还显示了大小和总大小。一个数据库的总大小为5个演出和80个不同的表。
我想知道这5个演出中有多少与我的索引有关。我可以单击表格并在其中查看详细信息。从理论上讲,如果我做了80次,对每个表一次,然后加起来,我将得到答案。
有没有办法(在phpmyadmin或SSH中)获得单个mysql表的组合索引有多少空间的答案?如果我能看到一个表的列表和总结,那就更好了。
提前致谢。
在我们的大多数页面上都有这行代码,我正在试图找出它的用途以及是否可以删除它.
它看起来像这样:
<script type="text/javascript">
/*<![CDATA[*/
if(top!=self){top.location.replace(self.location.href);}
/*]]>*/
</script>
Run Code Online (Sandbox Code Playgroud)
我知道这可能是一个愚蠢的问题,但是这个剧本试图说的是什么.这可能与登录功能有关吗?
提前致谢
我正在使用php来清除在url slug中使用的名称:,其中$ title可能如下所示:"这是标题"或"这是标题和副标题"
上面的例子我想分别改为"this-is-the-title"和"this-is-the-title-subtitle".所以,我做了这个代码......
<?php
$input1 = str_replace(" ","-",strtolower($title));
$output1 = preg_replace('/[^A-Za-z0-9-]/', '', $input1);
$output2 = str_replace("--","-",$output1);
echo $output2;
?>
Run Code Online (Sandbox Code Playgroud)
它运行良好,清除所有非字母数字,用破折号替换空格并使所有内容都小写.
但是,在某些情况下,它会返回双击("Title&More"变为("title - more").它应该是"title-more".我知道为什么双击,但我可以'似乎要把它清理干净.
我为$ output2添加了代码行,但由于某种原因它似乎没有工作.经过大量的反复试验,我感到很茫然.
谢谢...
我们正在从 php 5.3 升级到 5.4,它不向后兼容“get_magic_quotes_gpc”。我知道代码仍然可以工作,但每次都会返回一个 FALSE。
然而,我认为现在是时候从我们的代码中删除它了。
这是一个典型的例子:
$product_id = "0";
if (isset($HTTP_GET_VARS["id"])) {
$rid = (get_magic_quotes_gpc()) ? $HTTP_GET_VARS["id"] : addslashes($HTTP_GET_VARS["id"]);
}
//then $product_id gets used all over the place in many different queries
Run Code Online (Sandbox Code Playgroud)
我一直在研究如何解决这个问题,这就是我想到的:
$rid = "0";
if (isset($HTTP_GET_VARS["id"])) {
$rid = addslashes($HTTP_GET_VARS["id"]);
}
Run Code Online (Sandbox Code Playgroud)
我有点不知所措了。我知道这一切都与 SQL 注入等有关。我的解决方案合理/可接受吗?
提前致谢。
<<<<编辑-附加信息>>>>
感谢您的回复。实际上,我们大约 18 个月前进行了一系列到 PDO 的转换(主要是由于 stackoverflow 上的此类建议:)
所以,我可能有一些多余的、毫无意义的代码。下面是我上面发布的从 URL 获取变量的代码下面发生的情况的完整图片。
您会看到,曾经存在的 (get_magic_quotes_gpc) 现在已被注释掉并被 (addslashes) 取代。但该变量会传递给 PDO 查询。
$product_id = "0";
if (isset($HTTP_GET_VARS["id"])) {
//$product_id = (get_magic_quotes_gpc()) ? $HTTP_GET_VARS["id"] : addslashes($HTTP_GET_VARS["id"]); …Run Code Online (Sandbox Code Playgroud) 我正在尝试为开发中的站点考虑我的用户身份验证系统,并已阅读堆栈溢出和其他地方的许多帖子以了解我的想法.我找到了几个选项,我想知道这个看起来是不错的起点:
http://php.about.com/od/finishedphp1/ss/php_login_code_6.htm
它似乎加密密码,避免一些明显的陷阱.
此外,也许是一个愚蠢的问题,但我想使用身份验证有两个原因:1.在其他公共页面上为用户提供一些额外的功能.(想一想页面顶部的"Hello [username]").
2.还提供用户访问私人页面的权限.
这两种类型的应用程序(登录=在公共页面上添加的东西而不是登录=访问私有页面)依赖于相同的身份验证,对吧?
换句话说,无论我是想做其中一个还是两个都不应该影响我对身份验证的看法,对吗?
如果我通过使用about.com教程来解决问题,请告诉我....
提前致谢.
关注编辑:好的,所以about.com教程有一些漏洞.我发现下面有一个更完整的系统似乎使用SHA1加密.这也有新用户的电子邮件验证和一些其他不错的功能.乍一看,这看起来像是一条可靠的路线吗?
http://www.unlimitedtree.com/topic/1503-tutadvanced-login-member-system-php-tutorial/
mysql ×8
php ×6
javascript ×4
html ×2
phpmyadmin ×2
addslashes ×1
css ×1
database ×1
indexing ×1
mouseover ×1
onclick ×1
ssh ×1
wamp ×1
wampserver ×1