簡體   English   中英

如何使用AJAX執行MYSQLI查詢(准備好的語句)

[英]How to use AJAX to perform a MYSQLI query (prepared statement)

所以我在PHP(部分代碼)中有這個(准備好的語句)mysqli查詢:

#New DB connection
@ $mysqli = new mysqli ('localhost', 'user', 'password', 'database');

#Check DB connection, print error upon failure
if (mysqli_connect_errno()) {
    printf("<p>Connect failed.</p> <p>Error: \"%s\"</p>\n", mysqli_connect_error());
    exit();
} #if

#Check if userName already exists
$query = "SELECT * FROM users WHERE userName = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("s", $registerUserName);
$stmt->execute();
$stmt->store_result();
$num_results = $stmt->num_rows;
if ($num_results) {
    echo "<p>This user already exists. Please click your back button.</p>";
    exit;
}; #if

我想在onblur事件上通過Javascript / AJAX執行此操作:

function checkForUser(str) {
  var xmlhttp;    
  if (str=="") {
    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(???,true); // not sure what goes here or if I should even use this method
  xmlhttp.send();
}

那有可能嗎? 如何? 我找到了一些教程,但它們涉及使用jquery。 我可以不用jquery嗎?

我對您的代碼做了一些更改。 希望對您有所幫助:

#New DB connection
@ $mysqli = new mysqli ('localhost', '…', '…', '…');

#Check DB connection, print error upon failure
if (mysqli_connect_errno()) {
    printf("<p>Connect failed.</p> <p>Error: \"%s\"</p>\n", mysqli_connect_error());
    exit();
} #if

#Check if userName already exists
$query = "SELECT * FROM wp_users WHERE user_login = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("s", $_GET[registerUserName]); 
$stmt->execute();
$stmt->store_result();
$num_results = $stmt->num_rows;
if ($num_results) {
    echo "<p>This user already exists. Please click your back button.</p>";
    exit;
}; #if

現在,我們可以使用“ /ttt.php?registerUserName=user1”之類的URL來調用它,並執行以下功能:

function checkForUser(uname)
{
var req;
req = null;
if (window.XMLHttpRequest) {
    try {
        req = new XMLHttpRequest();
    } catch (e){}
} else if (window.ActiveXObject) {
    try {
        req = new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e){
        try {
            req = new ActiveXObject('Microsoft.XMLHTTP');
        } catch (e){}
    }
}

if (req) {       
    req.open("GET", "/ttt.php?registerUserName="+encodeURIComponent(uname), false);
    //req.onreadystatechange = processReqChange;
    req.send(null);
    if(req.status == 200) {
      return req.responseText;
    }

}
return false;
}

在里面

req.open("GET", "/ttt.php?registerUserName="+encodeURIComponent(uname), false);

false表示異步請求和req.send將等待php腳本的響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM