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

mysql update query with php variable and dots around it

所以,我正在学习 PHP,我对屏幕截图中带下划线的部分有疑问:

http://s18.postimg.org/8el9lkpuh/image.png

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

concatenate mysql select query with php variable?

MySQL query with PHP variables Issues

我的问题是,为什么我们需要变量周围的这些点?这些是连接点吗?我不认为我们在连接任何东西,我们只是在评估一个变量,不是吗?为什么它需要引号?为什么它不能简单地是 "UPDATE table WHERE name=$name" 并让 $name 评估它是什么..? 事实上,当我尝试这样做时,它只是不评估,但为什么呢? 下面几行,echo "<p>Name: $row[1]</p>";,例如 $row 的计算结果很好...

编辑:

$q='UPDATE towels SET name="$name" WHERE id=1'; 输出:$名称 我的变量在双引号内,所以它应该被评估,但没有?

$q='UPDATE towels SET name="$name" WHERE id=1'; 输出:$名称 双引号内的变量应该被评估,但没有?

$q='UPDATE towels SET name="'.$name.'" WHERE id=1'; 输出:正确! 单引号内的变量,不应该被评估,但是呢?

$q="UPDATE towels SET name='$name' WHERE id=1"; 输出:正确! 单引号内的变量,不应该被评估,但是呢?

很明显我错过了一些东西,因为这一切似乎与我应该的相反。

.确实是一个连接运算符。

处理您加下划线的语句时,'' 之间的位按字面意思 处理'' 之外的位进行计算。

因为您希望将 $name 转换为它的值(而不是只在 SQL 中包含文本 $name),所以您必须将其放在 [=11= 之外],. 只是告诉编译器将整个语句打包成一个长串。

看看这个... http://phphowto.blogspot.co.uk/2006/12/concatenate-strings.html ... 了解有关串联的更多信息。

echo 允许以不同的方式使用变量值(它们在 echo 参数中进行评估......详情请参见此处...... http://php.net/Echo


为了回答您的评论,您需要将该语句想象成三个不同的块 UPDATE Towels SET Name=" 是字符串的第一部分,$name 是第二部分," WHERE Id=1是第三部分。

他们都聚在一起说UPDATE Towels SET Name="John" WHERE Id=1

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

开始的时候有点迷惑,但你会掌握窍门的!