2013-10-25 115 views
0

我的包含文件包含了我所有的连接信息,我使用它来将其他页面连接到我的数据库。PHP在sql查询中使用变量

我已经注释掉了我的工作回声线,这显示了我上一页的结果,这些结果在这一点上都很好。我遇到的问题是让我的查询结果在整个页面上显示,同时使用前一页的变量作为我的SQL语句的where子句。当使用这个where子句时,结果只会带回1个结果。有没有人有什么建议?

我试过在查询的不同部分添加和删除'和“,并且我没有任何运气。如果有必要,我可以编辑并添加在此之前显示的页面,但是目前该信息正在通过与predictions.php页面上的注释代码行。

下面是我includes.php

<?php 
$dbaddress="localhost"; 
$dbuser="testuser"; 
$dbpass="testpass"; 
$dbname="testdb"; 
$dbtable="testtable"; 
$con=mysqli_connect($dbaddress,$dbuser,$dbpass,$dbname) 
?> 

下面是我predictions.php

<? 
    include 'includes.php'; 
    if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
    $elousera=$_POST['elousera']; 
    $elouserb=$_POST['elouserb']; 
    #echo 'You selected sequence# '.$elousera.' vs sequence# '.$elouserb; 
    $sqla = "SELECT mcacctname FROM $dbtable WHERE Sequence = '$elousera'"; 
    $resulta = mysqli_query($con,$sqla); 
    $playera = mysqli_free_result($resulta); 
    $sqlb = "SELECT mcacctname FROM $dbtable WHERE Sequence = '$elouserb'"; 
    $resultb = mysqli_query($con,$sqlb); 
    $playerb = mysqli_free_result($resultb); 
    echo 'You selected '.$playera.' vs '.$playerb; 
?> 
+0

您从未从结果集中提取任何结果。 '$ playera,$ playerb'不包含你在这里使用它们的内容。他们是'mysqli_result'资源对象。您需要调用'$ row_a = mysqli_fetch_assoc($ playera);'从SELECT语句中获取值。 –

+1

这将解决眼前的问题。更广泛的是SQL注入漏洞。既然你在使用MySQLi,你应该用准备好的语句来做。 http://php.net/manual/en/mysqli.prepare.php –

+0

另外,有一个集中的包含文件,当它不做错误检查后建立连接有什么意义 - 你仍然在创建冗余代码的方式。 –

回答

0

mysqli_free_result实际上并未给出结果。试想一下:

$playera = mysqli_fetch_array($resulta); 
    ... 
    $playerb = mysqli_fetch_array($resultb); 

而且$playera['mcacctname']应该给你的结果,如果有一个。如果不是,$ playera将为空。