mysql_query语法变体:at,quotes和花括号

时间:2013-05-31 04:13:36

标签: mysql syntax

我正在通过在线教程学习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)在第一个例子中,如果我将标题,摘要和内容括在单引号中,则会中断。在第二个,有'标题'和'发布',如果我不这样做就会中断!

非常感谢初学者可以理解的任何解释或参考/链接!

1 个答案:

答案 0 :(得分:1)

远离本教程,并使用PDO / mysqli,并解释如何正确参数化查询。

无论如何,你的问题是特定于PHP的,并且与字符串中的变量插值有关。在引用的字符串(")中插入变量,并且可以通过以下方式访问数组:

"{$var['value']}"
"$var[value]"

任何一个都有效......它们的功能完全相同,这取决于您应该使用的个人偏好。

mysql_query将字符串作为参数,因此构建它实际上没有任何区别。以上两者都是有效的。使用@没有任何区别 - 事实上,不应该使用它,您应该正确处理可能的错误并检查mysql_error