这是我的scripts.js
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").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("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","inputProcess.php?q="+str,true);
xmlhttp.send();
}
这是我的HTML
<script type="text/javascript" src="scripts.js"></script> <form> Type your name here : <input type="text" onkeypress="showHint(this.value)" name="name" /> </form>
这是我的PHP文件
<?php
$q = $_GET['q'];$dbc=mysql_connect("localhost","root","") or die (mysql_error()); mysql_select_db('input_oop') or die (mysql_error()); $sql = "INSERT INTO users set name = '".$q."'"; mysql_query($sql) or die (mysql_error()); ?>
这是问题:当我在文本框中只键入一个值时,它将多次保存在我的数据库中.
EG:我输入"Jordan".当我签入我的数据库时,它显示为
userid 1 J
userid 2 Jo
userid 3 Jor
Run Code Online (Sandbox Code Playgroud)
等等
即使你在那个盒子里做,也会为每个按键开启onkeypress.所以这是发生的事情:
换句话说,您根本没有显示提示,只是盲目地将用户输入的内容插入到数据库中.
如果您想显示提示,那么您应该至少执行"SELECT"查询并将结果返回到您的页面.
您还应该使用Mootools或jQuery之类的东西来进行AJAX调用.他们将处理构建/发送请求的难点,而不必担心用户使用的浏览器.
同样,在将诸如你的脚本发布到野外之前,先阅读有关SQL注入的信息.
您还有一个格式错误的插入查询.要插入新记录,基本语法是:
INSERT INTO sometable (field1, field2, field3, ...) VALUES (value1, value2, value3, ...)
Run Code Online (Sandbox Code Playgroud)
你在那里混合了一些部分的'更新'查询,其格式是
UPDATE sometable SET field1=value1, field2=value2, ....
Run Code Online (Sandbox Code Playgroud)
我无法看到您的查询如何像现在一样将任何内容插入数据库,因为语法完全被破坏了.
| 归档时间: |
|
| 查看次数: |
817 次 |
| 最近记录: |