我制作的应该向 mysql 表添加条目的 php 页面并没有对表执行任何操作
The php page that I made which is supposed to add entries to a mysql table is not doing anything to the table
首先,我已经检查以确保 const.php 位于页面所在的目录中。
我正在创建一个页面,允许管理员通过网站向 MySQL 表添加多个条目。 它使用 JavaScript 来扩展文本框输入字段的数组,以便管理员不必输入比他/她必须输入的条目更多的条目。 但是,如果管理员尝试添加的条目已经存在,则不会添加该条目。 运行代码后,将告知用户哪些条目已添加到表中,哪些条目未添加,因为已经存在此类条目。
这是将输入数组传递给 PHP 代码的形式。
表单 ID =用户表单操作="添加玩家.php" 方法="发布">
<legend>Player Info</legend>
<ol>
<div id="dynamicInput">
<li>
<label for=player>Player</label>
<input id=player type="text" name="player[]">
</li>
<li>
<label for=team>Team</label>
<input id=team type="text" name="team[]">
</li>
<li>
<label for=path>Player page path</label>
<input id=path type="text" name="path[]">
</li>
<li>
<label for=image>Player image path</label>
<input id=image type="text" name="image[]">
</li>
<br/>
</div>
</ol>
<input type="button" value="ADD ANOTHER PLAYER" onClick="addInput();">
<button type=submit name=submit> Submit </button>
</form>
在这里,javascript 代码动态创建文本框输入字段,以扩展输入数组。
<script language="Javascript" type="text/javascript">
function addInput(){
var newdiv = document.createElement('div');
newdiv.innerHTML = "<li><label for=player>Player</label><input id=player type='text' name='player[]'></li>";
document.getElementById('dynamicInput').appendChild(newdiv);
var newdiv = document.createElement('div');
newdiv.innerHTML = "<li><label for=team>Team</label><input id=team type='text' name='team[]'></li>";
document.getElementById('dynamicInput').appendChild(newdiv);
var newdiv = document.createElement('div');
newdiv.innerHTML = "<li><label for=path>Player page path</label><input id=path type='text' name='path[]'></li>";
document.getElementById('dynamicInput').appendChild(newdiv);
var newdiv = document.createElement('div');
newdiv.innerHTML = "<li><label for=image>Player image path</label><input id=image type='text' name='image[]'></li><br/>";
document.getElementById('dynamicInput').appendChild(newdiv);
}
</script>
这是形成帖子的 php 代码。
include "const.php";
$entry_results = "";
if( isset($_POST['submit']) )
{
$conn = mysql_connect(MYSQL_HOST, MYSQL_LOGIN, MYSQL_PASSWORD) or die("Could not connect: " . mysql_error());
mysql_select_db(MYSQL_DB);
$player = $_POST['player'];
$team = $_POST['team'];
$path = $_POST['path'];
$image = $_POST['image'];
$invalid = array();
$valid = array();
$j = 0;
$k = 0;
for($i=0; $i<count($player);$i++)
{
//Check to see if player is in the database
$query = "Select name FROM tblPlayers where name = '" . $player[i] ."'";
$result = mysql_query($query);
if(!empty($result))//if query gives a result add player to list of invalid entries
{
$invalid[$j++] = $player[$i];
}
else//otherwise add to database
{
$valid[$k++] = $player[$i];
if(empty($image[$i]))
{$image[$i] = '#';}
if(empty($path[$i]))
{$path[$i] = '#';}
$query = "SELECT entity_id FROM tblTeams WHERE team = '" . $team[$i] . "'";
$result = mysql_query($query);
$query = "INSERT INTO tblPlayers ( team_id, name, image, path) VALUES (
'" . $result . "',
'" . $player[$i] . "',
'" . $image[$i] . "',
'" . $path[$i] . "'
)";
$result = mysql_query($query);
}
}
if(!empty($invalid[0]))
{
for($i=0;$i<count($invalid);$i++){
$entry_results .= $invalid[$i];
if(($i+1)!=count($invalid))
$entry_results .= ', ';
}
$entry_results .= "were found in the database and were not enterered to prevent duplicant record. ";
}
if(!empty($valid[0]))
{
for($i=0;$i<count($valid);$i++){
$entry_results .= $invalid[$i];
if(($i+1)!=count($valid))
$entry_results .= ', ';
}
$entry_results .= "were entered into the players table.";
}
mysql_close($conn);
}
?>
这行单独的PHP代码告诉管理员输入的结果。
<?php
if( !empty($entry_results) )
{
echo "<h3>$register_message</h3><br />'n";
}
?>
您没有正确处理结果集。 看看这段代码:
$query = "SELECT entity_id FROM tblTeams WHERE team = '" . $team[$i] . "'";
$result = mysql_query($query);
$query = "INSERT INTO tblPlayers ( team_id, name, image, path) VALUES (
'" . $result . "',
'" . $player[$i] . "',
'" . $image[$i] . "',
'" . $path[$i] . "'
)";
在第一次查询之后,$result将是一个结果资源,而不是"entity_id"列的值。 该代码应重写为:
$query = "SELECT entity_id FROM tblTeams WHERE team = '" . $team[$i] . "'";
$result = mysql_query($query);
if ($row = mysql_fetch_assoc($result)) {
$query = "INSERT INTO tblPlayers ( team_id, name, image, path) VALUES (
'" . $row['entity_id'] . "',
'" . mysql_real_escape_string($player[$i]) . "',
'" . mysql_real_escape_string($image[$i]) . "',
'" . mysql_real_escape_string($path[$i]) . "'
)";
} else {
die "Couldn't find entity_id for this team.";
}
此外,还应正确转义数据库查询中使用的所有用户输入。 我在上面使用"mysql_real_escape_string"功能完成了此操作。
将所有表单元素名称从例如:"player[]"更改为"player",并在javascript中执行此操作.
提交表单将自动将所有具有相同名称的元素放入数组中。
相关文章:
- 为什么使用AWS Signature v4对S3的REST调用并没有真正使用签名过程
- PhantomJS并没有在每次加载页面时进行所有AJAX调用
- 我的自动完成并没有暗示什么
- 如何将表单数据传递给PHP并将json字符串返回给Javascript
- PHP文件没有't从Javascript应用程序获取$_POST
- 使用JQuery运行php并刷新页面是不起作用的
- 世界的时钟并没有滴答作响
- 因果报应并没有执行测试用例
- $.ajax中的成功并没有被执行
- Mozilla并没有完美地执行这段代码,尽管它适用于Chrome和IE
- Rally App SDK 2.0:Ext.Element 方法“不可选择”并没有那么规范化
- 无法通过 ajax 将数组发送到 php 并返回
- 预加载图像PHP并在JS中等待直到完成
- 函数将信息返回到控制台日志,但实际上并没有执行应有的操作
- 扶手并没有填满表格
- Javascript似乎并没有取消隐藏我的元素
- 滑雪者并没有做出反应
- React路由帮助路由实际上并没有跳转到页面
- 我制作的应该向 mysql 表添加条目的 php 页面并没有对表执行任何操作
- PHP有没有一种方法可以访问服务器上的文件并只保存文件的前半部分