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 语句中预期的格式 - 并且由于您希望这些 ""
按字面意思理解,它们属于 ''
.
开始的时候有点迷惑,但你会掌握窍门的!
所以,我正在学习 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 语句中预期的格式 - 并且由于您希望这些 ""
按字面意思理解,它们属于 ''
.
开始的时候有点迷惑,但你会掌握窍门的!