mysql更新查询与php变量和它周围的点

时间:2015-07-10 12:05:19

标签: php mysql variables evaluate

所以,我正在学习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'; 输出:$ name 我的变量在双引号内,所以它应该被评估,但不是吗?

$q='UPDATE towels SET name="$name" WHERE id=1'; 输出:$ name 双引号内的变量,应该得到评估,但不是吗?

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

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

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

1 个答案:

答案 0 :(得分:3)

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

当处理您加下划线的语句时,''之间的位被处理字面,而''之外的位将被评估。

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

看看这个...... 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语句中的预期格式 - 并且因为你希望字面上理解那些"",所以它们属于{{1} }}

开始时会让人感到困惑,但你会得到它的支持!