PHP语法麻烦

时间:2011-10-24 21:26:41

标签: php mysql

我已经尝试了这100种方式并且遍布网络:

<?php
$dbname = 'pdartist2';
$table = 'subcategories';
// query

$result = mysql_query('SELECT SubHeaderText FROM subcategories where SCID = $SCID');

while($row = mysql_fetch_row($result))
{
    foreach($row as $cell)
        "$cell";
}
mysql_free_result($result);
?>

我正在尝试传递参数$ SCID这是一个数字,但我无法获得语法。如果我把一个数字放在它的工作。但我需要能够传递一个变量。

4 个答案:

答案 0 :(得分:2)

在PHP中使用单引号不允许传递变量。将您的查询行设为:

$result = mysql_query("SELECT SubHeaderText FROM subcategories where SCID = $SCID");

答案 1 :(得分:1)

您需要在整个查询周围使用双引号。我还添加了错误检查,因为这对于检查它是否按预期工作非常有用

$result = mysql_query("SELECT SubHeaderText FROM subcategories where SCID = '$SCID' ") or die(mysql_error());

答案 2 :(得分:0)

问题是你在查询周围使用单引号,PHP不会用单引号解释变量,只能用双引号解释。因此,您可以通过以下两种方式之一编写查询。

$result = mysql_query("SELECT SubHeaderText FROM subcategories where SCID = $SCID")

OR

$result = mysql_query('SELECT SubHeaderText FROM subcategories where SCID = '.$SCID)

使用双引号方法看起来更干净,但我个人喜欢使用带引号的单引号,所以我的编辑器会强调我在那里使用变量。

答案 3 :(得分:0)

关于将单引号更改为双引号的两个答案是正确的,但是我发现完成您正在做的最好的方法是使用单引号作为sql,然后简单地将变量附加到字符串,例如:

$result = mysql_query('SELECT SubHeaderText FROM subcategories where SCID = ' . $SCID);

// Or

$result = mysql_query('SELECT SubHeaderText FROM subcategories where SCID = ' . $SCID . ' AND someCol = ' . $someValue);

正如Nick Q.在评论中提到的那样,你应该准备你的变量进入SQL,这样你就不会最终成为SQL注入攻击的目标。我的建议是学习PDO,你可以在那里准备你的陈述然后绑定价值观。