所以,我正在学习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";
输出:正确!
单引号内的变量,不应该被评估,但是吗?
很明显我错过了一些东西,因为它似乎与我应该是相反的。
答案 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} }}
开始时会让人感到困惑,但你会得到它的支持!