ホームページ > バックエンド開発 > PHPチュートリアル > 私のajaxコードの何が問題なのでしょうか?

私のajaxコードの何が問題なのでしょうか?

WBOY
リリース: 2016-06-23 13:15:12
オリジナル
977 人が閲覧しました

ajax を使用してユーザー名を検出するだけです。yes または no がポップアップしない理由はわかりません。代わりに、次のものが表示されます


データベースにもあります



<!DOCTYPE html><html><head>  <meta charset="utf-8">	<title></title>  <script type="text/javascript">  	function ajax(url,funsucc){  var oAjax=new XMLHttpRequest();            oAjax.open('GET',url,true);            oAjax.send();                oAjax.onreadystatechange=function(){              if(oAjax.readyState==4){                if(oAjax.status==200){                  funsucc(oAjax.responseText);                }           }}}  </script>	<script type="text/javascript">	window.onload=function(){		var oTxt=document.getElementById('txt1');		oTxt.onblur=function(){			ajax("chaxun.php?id="+oTxt.value,function(str){	        alert(str);	        });		}			}	</script></head><body><form>	<input type="text" id="txt1" name="user"></form></body></html>
ログイン後にコピー


バックエンド (chaxun.php)
<?php$pdo=new PDO("mysql:host=localhost;dbname=t1","root","");$id=$_GET["id"];$stmt=$pdo->prepare("select * from user WHERE username=?");$stmt->execute(array($id));$res=$stmt->fetchall();$result=mysql_affected_row($res);if($result==-1){	echo "yes";}else{	echo "no";}?>
ログイン後にコピー


ディスカッションへの返信 (解決策)

I know that ected_row の記述が間違っています。mysql_affected_rows に変更しましたが、それでも変わりません。動作しません

xdebug からのエラーレポートが表示されました
chaxun.php 行 7 $result= mysql_affected_row($res); は未定義関数です

正しい書き方は次のとおりです: mysql_affected_row s
ただし、接続には PDO を使用しますmysql_affected_rows を使用してデータベースを操作するのは間違いです
mysql 拡張機能を使用してデータベースを操作する場合でも、mysql_affected_rows は select コマンドに対しても無効です

そのため $result=mysql_affected_row($res); は削除する必要があります
if( $result==-1){
if(! $res){ に変更されました

$stmt-> データが見つからない場合、$res は空の配列を返します。ポップアップは xdebug のエラーレポートです。
chaxun.php $result=mysql_affected_row($res); の行 7 にある mysql_affected_row が未定義の関数であることを指摘しています

正しい書き方は次のとおりです: mysql_affected_row s

PDO を使用してデータベースに接続し、操作します。mysql_affected_rows を使用するのは間違いです

mysql 拡張機能を使用してデータベースを操作する場合でも、mysql_affected_rows は select コマンドでは有効ではありません
ので、 $result=mysql_affected_row($res); とする必要があります。削除されました
if($result==-1){

if(! $res){ に変更されました

$stmt->fetchall() は配列を返します (データが見つからない場合、$res は空の配列です)


司会者さん、私の基本的なスキルが低すぎるので、もう少し詳しく見てみる必要があります。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート