1

我正在通过在线教程学习 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 抑制了错误消息,所以如果这是这里发生的事情,你能解释一下它是如何运作的以及什么是真正正确的语法吗?)

( '')。事实上,它告诉我有一个意外的 {,这导致了我的下一个问题:2) 第二个例子中的 {} 是怎么回事?他们似乎什么也没做,但没有他们就崩溃了。3) 在第一个示例中,如果我将标题、摘要和内容括在单引号 '' 中,则会中断。在第二个中,使用“标题”和“帖子”,如果我不这样做,它就会中断!

初学者可以理解的任何解释或参考/链接将不胜感激!

4

1 回答 1

1

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

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

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

任何一个都是有效的......它们的功能相同,您应该使用哪一个取决于个人喜好。

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

于 2013-05-31T04:19:44.980 回答