加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 带引号的环绕字符串

发布时间:2020-12-13 13:05:01 所属栏目:PHP教程 来源:网络整理
导读:PHP中是否有一个函数可以为字符串添加引号? 喜欢“’”.str.“’” 这是用于varchars的sql查询.我搜了一下,没有结果…… 我做了以下事情: $id = "NULL";$company_name = $_POST['company_name']; $country = $_POST['country'];$chat_language = $_POST['c
PHP中是否有一个函数可以为字符串添加引号?

喜欢“’”.str.“’”

这是用于varchars的sql查询.我搜了一下,没有结果……

我做了以下事情:

$id = "NULL";
$company_name = $_POST['company_name'];         
$country = $_POST['country'];
$chat_language = $_POST['chat_language'];
$contact_firstname = $_POST['contact_firstname'];
$contact_lastname = $_POST['contact_lastname'];
$email = $_POST['email'];
$tel_fix = $_POST['tel_fix'];
$tel_mob = $_POST['tel_mob'];       
$address = $_POST['address'];       
$rating = $_POST['rating'];

$company_name = "'".mysql_real_escape_string(stripslashes($company_name))."'";
$country = "'".mysql_real_escape_string(stripslashes($country))."'";
$chat_language = "'".mysql_real_escape_string(stripslashes($chat_language))."'";
$contact_firstname = "'".mysql_real_escape_string(stripslashes($contact_firstname))."'";
$contact_lastname = "'".mysql_real_escape_string(stripslashes($contact_lastname))."'";
$email = "'".mysql_real_escape_string(stripslashes($email))."'";
$tel_fix = "'".mysql_real_escape_string(stripslashes($tel_fix))."'";
$tel_mob = "'".mysql_real_escape_string(stripslashes($tel_mob))."'";
$address = "'".mysql_real_escape_string(stripslashes($address))."'";
$rating = mysql_real_escape_string(stripslashes($rating));

$array = array($id,$company_name,$country,$chat_language,$contact_firstname,$contact_lastname,$email,$tel_fix,$tel_mob,$address,$rating);
$values = implode(",",$array);

$query = "insert into COMPANIES values(".$values.");";
首先,我看到你正在使用stripslashes().这意味着你有 magic quotes.我建议把它关掉.

您可能想要做的是将其中的一部分放在一个函数中:

function post($name,$string = true) {
  $ret = mysql_real_escape_string(stripslashes($_POST[$name]));
  return $string ? "'" . $ret . "'" : $ret;
}

然后:

$company_name = post('company_name');

但是,所有这些都会减少您略有的样板量.

有些人建议使用PDO或mysqli,以便您可以使用预准备语句.虽然它们很有用但肯定没有必要.您正在逃避这些字段,因此声称SQL注入漏洞(至少在此代码的情况下)是错误的.

最后,我不会以这种方式构造查询.首先,它依赖于公司表中具有特定类型和顺序的列.明确这一点要好得多.我经常这样做:

$name = mysql_real_escape_string($_POST['name']);
// etc
$sql = <<<END
INSERT INTO companies
(name,country,chat_language)
VALUES
($name,$language)
END;

这足以完成任务.您当然可以使用mysqli或PDO进行调查,但这不是必需的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读