2014-11-08 129 views
0

SQL newb在这里...从SQL变量的变量中读取字符串

$db_result = mysql_query("SELECT first_name FROM gamers WHERE comp_id = 'myid'");以我想要的方式工作。

$compid1 = 'myid'; 
$db_result = mysql_query("SELECT first_name FROM gamers WHERE comp_id = @compid1"); 

不会产生相同的结果。

我也试过$compid1和各种其他的东西,但没有成功。

对不起,这个简单的问题,但答案仍然是我无法回避。谢谢!

更新:哦,是啊......这个问题。我如何使用预存变量来执行我的WHERE检查?

+1

没有也不会工作,一个MySQL变量(开头为'@')不自动将具有相同名称的PHP变量链接 – 2014-11-08 20:22:32

回答

2

您需要在变量前使用$,而不是@。你需要把周围的引号,因为它是一个字符串:

$db_result = mysql_query("SELECT first_name FROM gamers WHERE comp_id = '$compid1'"); 

然而,这将是最好的,如果你停止使用mysql扩展。使用PDO或mysqli,并使用带有参数的预准备语句。例如。在PDO中,它将是:

$stmt = $conn->prepare("SELECT first_name FROM gamers WHERE comp_id = :compid"); 
$stmt->bindParam(':compid', $compid1); 
$stmt->execute(); 
+0

的感谢!如果我运行PDO版本,我将如何获取$ db_result? – Evorlor 2014-11-08 20:28:32

+2

使用'$ stmt-> fetch()'来获得结果。这些都在PDO文档中。 – Barmar 2014-11-08 20:32:13

1

将字符串变量包含在一对引号内。

$compid1 = 'myid'; 
$db_result = mysql_query("SELECT first_name FROM gamers WHERE comp_id = '$compid1'"); 
+0

谢谢!如果我还有额外的话,我也会给你一个绿色的复选标记,但是Barmar击败了它。 – Evorlor 2014-11-08 20:28:57

+0

很好。一个upvote对我来说就足够了:) – cuSK 2014-11-08 20:39:42