使用下拉菜单更改数据库值时出错
Error when using drop menu to change database value
当我选择下拉菜单选项更改数据库中的值为所选值时,它会给出此错误:
SyntaxError: missing ) after argument list changeGroup("email@email.com")
基本上我想做的是我有一个存储联系人的应用程序,在未分组的联系人部分它有下拉菜单,当你从它选择一个值,它提交的值,并使用该值来更新数据库。我使用:
action='javascript:changeGroup(".$contactDetails.")
告诉update语句要更新哪个联系人。
我代码:<!--Include Database connections info-->
<?php include('config.php'); ?>
<!--Links to CSS file for formatting-->
<link href="Contacts.css" rel="stylesheet" type="text/css"/>
<!--Links to Javascript file for the for action to change the group of a contact-->
<script src="ajax.js" language="javascript"></script>
<?php
$contactDetails = $_GET['contactDetails'];
$cdquery="SELECT * FROM `contacts` WHERE `newEmail` = '$contactDetails'";
$cdresult=mysql_query($cdquery) or die ("Query to get data from first table failed: ".mysql_error());
while ($row = mysql_fetch_assoc($cdresult))
{
echo "" . $row['newFname'] . " " . $row['newLname'] . "'s " . "Details:";
echo "<table>";
echo "<tr>";
echo "<th>Name:</th>";
echo "<th>Email Address:</th>";
echo "<th>Phone:</th>";
echo "<th>Postal Address:</th>";
echo "<th>Group:</th>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $row['newFname'] . " " . $row['newLname'] . "</td>";
echo "<td>" . $row['newEmail'] . "</td>";
echo "<td>" . $row['newPhone'] . "</td>";
echo "<td>" . $row['newAddress'] . "</td>";
echo "<td>" . $row['group'] . "</td>";
echo "</tr>";
}
echo "</table>";
echo "<form action='javascript:changeGroup(".$contactDetails.")' method='get'> Add contact to
<select id='group' name='group' onchange='this.form.submit(value=this.options[this.selectedIndex].value)'>
<option>Select a group...</option>
<option value='Family'>Family</option>
<option value='Friends'>Friends</option>
<option value='Colleagues'>Colleagues</option></select>
group.</form>";
mysql_close($link);
?>
ajax功能:function changeGroup(str)
{
document.getElementById("content02").innerHTML="";
if (str=="")
{
document.getElementById("content02").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("content02").innerHTML=xmlhttp.responseText;
document.getElementById("content02").innerHTML = "";
}
}
xmlhttp.open("GET",'getChangeGroup.php?contactChange='+contactChange+'&group='+group,true);
xmlhttp.send();
xmlhttp.onreadystatechange = changeReload;
xmlhttp.send(null);
}
php: <!--Include Database connections info-->
<?php include('config.php'); ?>
<!--Links to CSS file for formatting-->
<link href="Contacts.css" rel="stylesheet" type="text/css"/>
<?php
$contactChange = $_GET['contactChange'];
$group = $_GET['group'];
$cdquery="UPDATE `contacts` SET `group` = '$group' WHERE `newEmail` = '$contactChange'";
$cdresult=mysql_query($cdquery) or die ("Query to get data from first table failed: ".mysql_error());
mysql_close($link);
?>
我真的不知道你的代码是做什么的,我也没有耐心在我这端完全复制它,但就像它一样,你正在传递一个变量给你的函数,而不是字符串,在这一行:
echo "<form action='javascript:changeGroup(".$contactDetails.")' method='get'> Add contact to
要解决这个问题,您需要将字符串引用为实际字符串:
echo "<form action='javascript:changeGroup(''".$contactDetails."'')' method='get'> Add contact to
我想这是你的主要问题。如果没有这些引号,javascript将把你的回显变量视为js变量,而不是字符串。
关于你的数据库交互…
还有,你使用了一个不推荐的…以及即将被移除的数据库交互API。我推荐PDO来代替它,它可以防止注入攻击,并且在不久的将来不会被删除,在这里了解更多关于它的信息。
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- javascript中的数组出错
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何通过php页面将数据库值检索到jquery自动完成框中
- 使用javascript从数据库中添加表
- 通过CSV文件上载更新数据库表
- 使用Javascript将多条记录插入SQLite数据库时出错
- 尝试在移动优先应用程序中从 SQL 数据库获取数据时出错
- 将数据插入数据库express/mongodb应用程序时出错
- 将数据从异步请求添加到 WebSQL 数据库时出错
- 从mongoldb mapReduce访问数据库变量时出错
- 使用javascript分析csv数据库时出错
- 通过node-js-app连接openshift中的mysql数据库时出错
- 猫鼬连接数据库时出错
- 使用ajax json c#将数据从数据库加载到gridview时出错
- 在sqlite中使用jquery验证数据库时出错
- 在Firebase数据库中单击AlertDialog以设置值时出错
- 从phoneGap从SQlite数据库检索值时出错
- 在ajax插入数据库时出错
- 使用下拉菜单更改数据库值时出错