mysql更新查询,使用php变量及其周围的点

mysql更新查询,使用php变量及其周围的点,php,mysql,variables,evaluate,Php,Mysql,Variables,Evaluate,因此,我正在学习PHP,我对截图中划线部分有一个问题: 我阅读了这些相关问题,这些问题通常很有帮助(我意识到这里没有处理安全问题),但没有帮助我理解我的具体问题: 我的问题是,为什么我们需要这些点围绕变量?这些是连接点吗?我不认为我们在连接任何东西,我们只是在计算一个变量,不是吗?为什么它周围需要引号?为什么不能简单地“updatetable WHERE name=$name”并让$name计算为它是什么。。? 事实上,当我尝试这样做时,它只是不评估,但为什么? 下面几行,echo“Nam

因此,我正在学习PHP,我对截图中划线部分有一个问题:

我阅读了这些相关问题,这些问题通常很有帮助(我意识到这里没有处理安全问题),但没有帮助我理解我的具体问题:

我的问题是,为什么我们需要这些点围绕变量?这些是连接点吗?我不认为我们在连接任何东西,我们只是在计算一个变量,不是吗?为什么它周围需要引号?为什么不能简单地“updatetable WHERE name=$name”并让$name计算为它是什么。。? 事实上,当我尝试这样做时,它只是不评估,但为什么? 下面几行,
echo“Name:$row[1]

,例如$row的计算结果很好

编辑:

$q='UPDATE Towers SET name=“$name”其中id=1'
输出:$name
我的变量在双引号内,所以应该对它求值,但不求值

$q='UPDATE Towers SET name=“$name”其中id=1'
输出:$name
双引号内的变量,应进行求值,但不进行求值

$q='UPDATE Towers SET name=“”.$name.”其中id=1'
输出:正确!
单引号内的变量,不应进行求值,但会吗

$q=“更新毛巾集名称=“$name”,其中id=1”
输出:正确!
单引号内的变量,不应进行求值,但会吗


很明显,我遗漏了一些东西,因为这一切对我来说似乎是相反的。

这个
确实是一个串联运算符

处理带下划线的语句时,
'
之间的位将被处理,而
'
之外的位将被计算

因为您希望将
$name
转换为它的值(而不仅仅是将文本
$name
放在SQL中),所以必须将它放在
'
之外,
只告诉编译器将整个语句打包成一个长串接字符串

看看这个。。。有关串联的详细信息

echo
允许以不同的方式使用变量值(它们在
echo
参数中进行计算…有关详细信息,请参阅此处


在回答您的评论时,您需要将该语句想象为三个不同的块
UPDATE towers SET Name=“
是字符串的第一部分,
$Name
是第二部分,
”其中Id=1
是第三部分

他们一起说
更新毛巾SET Name=“John”其中Id=1

您需要在
John
值周围使用
,因为这是SQL语句中所期望的格式-并且由于您希望这些
按字面意思理解,它们属于
'


一开始就让人困惑,但你会找到窍门的!

你正在连接
,你可以执行
“updatetable WHERE name='$name'”
为什么我们需要连接?--另外,当我执行你编写的操作时,输出总是简单的$name(而不是“John”或任何名称)谢谢你提供的详细信息——明白了。但在我的例子中,我的$name变量在单引号内,它仍在计算中!这让我很困惑!我将编辑我的帖子以更好地解释我的问题…所以你是说这是编写它的最佳方式?
$q=“UPDATE Towers SET name=”“$name.”其中id=1”
因为这不是我最初拥有的。最初我拥有
$q=“UPDATE Towers SET name=“”.$name.”“其中id=1”
但仍然有效,即单引号在双引号内,这意味着没有评估,但它发生了。您可以使用
'
在php中可以互换…您可以将
'
放在
中”
它将被逐字解释,反之亦然。我并不惊讶您会发现它令人困惑,因为它是……只有经验才能减少您的困惑!双引号的标准转义如何?它实际上对我有效,但在PHP/SQL中它是一种不好的做法吗?
$q=“UPDATE Towers SET name=\”$name\“WHERE id=1”
是的,如果你想的话,你可以跳过它们……这不是一个坏的做法,但是在
内部使用
可以让代码更可读(只要你的SQL引擎希望
作为文本分隔符,如果不是这样,那么你会使用相反的方案…
内部
”。