带有单引号的 MySQL 语句的 PHP 脚本

Posted

技术标签:

【中文标题】带有单引号的 MySQL 语句的 PHP 脚本【英文标题】:PHP script with MySQL statement with single quote 【发布时间】:2011-11-12 06:13:59 【问题描述】:

我正在学习phpmysql,今天遇到了这个功能

function get_director($director_id) 
global $db;
$query = 'SELECT 
        people_fullname 
   FROM
       people
   WHERE
       people_id = ' . $director_id;
$result = mysql_query($query, $db) or die(mysql_error($db));

$row = mysql_fetch_assoc($result);
extract($row);

return $people_fullname;

我了解什么是函数,我在学习PHP时创建了一些。但是这个有点复杂。我看不懂

WHERE people_id = ' . $director_id

我猜单引号结束了 MySQL 语句?然后将它与参数连接起来?

【问题讨论】:

为了避免 Sql Injection 你应该addSlashes($director_id) mysql_real_escape_string()。不添加斜线。 @KyleBoddy,没错,我已经有一段时间没有使用非 PDO 了。 【参考方案1】:

是的,你是对的,单引号结束 sql 字符串并与提供的参数连接。如果您想将值打印出来,情况相同。

echo 'This is the director ID :'.$director_id;

【讨论】:

【参考方案2】:

我不会将此运算符称为“SQL 语句”。也不会说它是“关闭的”。 对于 PHP,它只是一个没有特殊含义的字符串。 并且引号结束了这个字符串文字,而不是 SQL 语句。

这里严格来说只是一个串联,一个带变量的字符串字面量。

结果是完整的 SQL 语句。

【讨论】:

你能告诉我 $query 变量实际上是做什么的吗?具体来说,WHERE people_id = ' 是什么。 $director_id;部分代码做什么?从people_fullname拉数据的条件是什么 最好将此作为一个单独的问题提出。只发布这个不带 PHP 的查询,只发布不带引号的查询本身(使其与 people_id = 1 保持一致) 我只是想知道那个 WHERE 子句的含义。我应该为此发布一个单独的线程吗? 是的,完全正确。这个问题与PHP和函数无关。如果您对 SQL 有任何疑问 - 请单独提问【参考方案3】:

.(dot) 在 php 中用于连接。 如果您将 32 传递给 $director_id,那么最终查询将是 从people_id = 32的人中选择people_name 如果您将 43 传递给 $director_id,那么最终查询将是 从 people_id = 43 的人中选择 people_name 表示 .(dot) 用于将 $director_id 的值附加到单引号中的字符串。 最终查询将传递给 mysql。使用 .(dot) 只是 php 中的一种方法,用于生成我们要在 mysql 中执行的最终查询。

【讨论】:

【参考方案4】:

我猜单引号结束了 MySQL 语句?然后它与参数连接起来?请帮帮我。

没错。

http://php.net/manual/en/language.operators.string.php

<?php
$a = "Hello ";
$b = $a . "World!"; // now $b contains "Hello World!"

$a = "Hello ";
$a .= "World!";     // now $a contains "Hello World!"
?>

编辑:WHERE 子句的含义最好通过对整个语句作用的伪解释来解释。

选择每个人的全名,其中他们的 people_id 等于传递给函数的某个值。

但是,如果您正在评估这些事情并且不了解基本 SQL,那么您就太过分了。我建议你阅读整个 Tiztag PHP/MySQL 教程。

http://www.tizag.com/mysqlTutorial/

【讨论】:

请告诉我代码中那个WHERE子句是什么意思。

以上是关于带有单引号的 MySQL 语句的 PHP 脚本的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL 中使用单引号存储值 [重复]

php里单引和双引的用法区别和连接符(.)

mysql+php程序中sql语句中的引号使用方法,啥时候用双引号啥时候用单引号

如何用sql语句插入一个带有单引号的值

在 PHP/MySQL 插入中转义单引号不起作用

PHP和sql语句中单引号和双引号的区别