我正在通过在线教程学习MySQL / php,并且发现不同来源的技术和语法不同。
在一个教程中,我输入数据(来自HTML表单),如下所示:
$table = "ENTRIES";
$sql = "INSERT INTO $table SET
TITLE = '$_POST[title]',
SUMMARY = '$_POST[summary]',
CONTENT = '$_POST[content]'";
$query = @mysql_query($sql);
在另一个,像这样:
mysql_query("
INSERT INTO `posts` SET
`title` = '{$_POST['title']}',
`contents` = '{$_POST['post']}'
");}
他们都工作,我理解不同的变量安排。但我有以下问题,可能都是相关的。 (我认为@mysql_query会抑制错误消息,所以如果这就是这里发生的事情,你能解释一下它是如何工作的以及实际上正确的语法是什么吗?)
1)在第一个例子中,在@mysql_query()中,如果我使用(“”)或('')并不重要......但在第二个例子中,在mysql_query()中,它会破坏我用 ('')。事实上,它告诉我有一个意外的{,这导致我的下一个问题: 2)第二个例子中{}的处理是什么?它们似乎没有做任何事情,但没有它们就会破裂。 3)在第一个例子中,如果我将标题,摘要和内容括在单引号中,则会中断。在第二个,有'标题'和'发布',如果我不这样做就会中断!
非常感谢初学者可以理解的任何解释或参考/链接!
答案 0 :(得分:1)
远离本教程,并使用PDO / mysqli,并解释如何正确参数化查询。
无论如何,你的问题是特定于PHP的,并且与字符串中的变量插值有关。在引用的字符串("
)中插入变量,并且可以通过以下方式访问数组:
"{$var['value']}"
"$var[value]"
任何一个都有效......它们的功能完全相同,这取决于您应该使用的个人偏好。
mysql_query
将字符串作为参数,因此构建它实际上没有任何区别。以上两者都是有效的。使用@
没有任何区别 - 事实上,不应该使用它,您应该正确处理可能的错误并检查mysql_error