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