gpt4 book ai didi

PHP输出json

转载 作者:行者123 更新时间:2023-11-29 08:44:41 25 4
gpt4 key购买 nike

我试图让我可以轻松地使用 php/mysql 中的 jquery 请求 json 输出。现在我正在使用下面的。谁能推荐一个更好的方法吗?

/do.php?用户名=bob

<?php
$str = $_SERVER['QUERY_STRING'];
if($str != ''){
if(preg_match("/username/",$str)){
parse_str($str);
$json = json_encode(checkUserName($username));
echo $json;
}
}
function checkUserName($v){
$db = new DB();
$db->connectDB();

$findUsername = mysql_query("SELECT COUNT(*) FROM user WHERE username = '$v'");
$countUser = mysql_fetch_row($findUsername);
if($countUser[0] < 1){
return array('username' => 'false');
}else{
return array('username' => 'true');
}

$db->disconnectDB();
}
?>

我得到了一个干净的 {'username':'false'} 或 {'username':'true'} ,它可以满足我的需要;但是 PHP 有更好的方法来做到这一点吗?

哇 - 惊人的答案!我转储了旧的数据库类并将其替换为:

<?php
function db_connect(){
$dbh = new PDO("mysql:host=localhost;dbname=thisdb", "dbuser", "dbpass");
return ($dbh);
}
?>

然后在我的 do.php 脚本中我进行了以下更改:

<?php
if(isset($_GET['username'])){
header('content-type: application/json; charset=UTF-8');
echo json_encode(checkUserName($_GET['username']));
}

function checkUserName($v){
$dbh = db_connect();
$sql = sprintf("SELECT COUNT(*) FROM user WHERE username = '%s'", addslashes($v));
if($count = $dbh->query($sql)){
if($count->fetchColumn() > 0){
return array('username'=>true);
}else{
return array('username'=>false);
}
}
}
?>

我的 jquery 是:

function checkUserName(str){
$.getJSON('actions/do.php?username=' + str, function(data){
var json = data;
if(json.username == true){
// allowed to save username
}else{
// not allowed to save username
}
});
}

最佳答案

$str = $_SERVER['QUERY_STRING'];
if($str != ''){
if(preg_match("/username/",$str)){
parse_str($str);
$json = json_encode(checkUserName($username));
echo $json;
}
}

使用 $_GET super 全局可以更容易地编写:

if (isset($_GET['username'])) {
echo json_encode(checkUserName($_GET['username']));
}

内部checkUserName():

$findUsername = mysql_query("SELECT COUNT(*) FROM user WHERE username = '$v'");

你应该正确转义$v:

$sql = sprintf("SELECT COUNT(*) FROM user WHERE username = '%s'", mysql_real_escape_string($v));
$findUsername = mysql_query($sql);

更好的是,学习 PDO/mysqli 并使用准备好的语句。

$db->disconnectDB();

除非您使用持久连接,否则不需要此语句。如果这样做,您应该首先将返回值保留在变量中,并且仅在断开连接后才返回。

关于PHP输出json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12811781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com