2011-12-16 3 views
0

Запрос ниже находится на странице, где есть только одно значение для $submissionid. Таким образом, поле points имеет только одно значение.Превращение результата из запроса в переменную PHP

Как я могу превратить points из запроса ниже в обычную переменную PHP?

$sqlStra = "SELECT points, submissionid 
       FROM submission 
       WHERE submissionid = '$submissionid'"; 

EDIT: Это вытягивать из базы данных MySQL.

EDIT II: Я хочу, чтобы points равным переменной на всей странице, а не только внутри цикла while.

+0

Ну, как же выполнить запрос в первую очередь? Кроме того, имейте в виду, что этот запрос уязвим для SQL-инъекции, если вы заранее не очистили значение '$ uploadid' (возможно, с' intval'?). – Jon

+0

Ответ в значительной степени зависит от того, какую базу данных и библиотеку баз данных вы используете. – James

ответ

0

Я бы использовал библиотеку ORM (я использую ту, которая поставляется в комплекте с Kohana), чтобы исключить возможность инъекций SQL. Однако, если соединение с базой данных уже установлено, этот код будет делать то, что вы ищете.

$resource = mysql_query("SELECT points, submissionid FROM submission WHERE submissionid = '$submissionid'"); 
$result = mysql_fetch_assoc($resource); 
echo $result["points"]; 

Если вы не установили подключение к базе данных MySQL, проверить mysql_connect.

0

Ну, вы хотите, чтобы получить ресурс из этого запроса, а затем передать его mysql_fetch_assoc, например, так:

$res = mysql_query($sqlStra); 

// If you **Know for sure** you'll only have one row: 
$row = mysql_fetch_assoc($res); 
$points = $row['points']; 

//Otherwise, you're going to need to loop. 
$array_of_all_points = array(); 

while ($row = mysql_fetch_assoc($res)) { 
    // $row['points'] now has what you want. You can assign it normally, or can use 
    // extract($row) to turn it into $points, which I would advise against personally. 
    $points = $row['points']; 
    $array_of_all_points[$row['submissionid']] = $row['points']; 
} 

echo $points; // This will be the last $row['points'] that was executed. 
echo $array_of_all_points['thatsubmissionid']; // Will output the points for the given session id. 

Кроме того, этот запрос не является безопасным (если $ submissionid приходит от пользовательского ввода , он уязвим для SQL-инъекции), вы должны использовать библиотеку ORM, как упоминает iloveitaly. (Я использую Zend DB, хотя это технически не ORM сам по себе)

Edit:

В комментарии указывают, это зависит от того, если вы на самом деле с помощью Mysql. Если вы этого не сделаете, вы можете использовать PDO library для выполнения запросов.

+0

@ Cthos: Я хочу, чтобы «точки» равны переменной на всей странице, а не только внутри цикла while. – John

+0

@John - Правильно ... цикл while привязан к текущей области, в которой вы находитесь. – Cthos

+0

@ Cthos, если я говорю '$ row ['points'] = $ points' внутри цикла while, могу ли я использовать' $ points' за пределами цикла? – John

1

Таким образом, вы можете прочитать все точки, возвращаемые вашим запросом.

while ($row = mysql_fetch_array($sqlStra, MYSQL_ASSOC)) { 
    $points = $row["points"]); 
} 
+0

'mysql_fetch_array' получает ресурс (http://www.php.net/manual/en/language.types.resource.php), а не запрос напрямую. http://php.net/manual/en/function.mysql-fetch-array.php – Cthos

0
$sqlStra = "SELECT points FROM submission WHERE submissionid = ?"; 

$statement = $connection->prepare($sqlStra); 
$statement->bind_param('i', $submissionid); 
$statement->bind_result($points); 
$statement->execute(); 
$statement->fetch(); // this will create/populate $points 
Смежные вопросы