Php 优化sql语法
我有3个sql问题:Php 优化sql语法,php,sql,Php,Sql,我有3个sql问题: $producent = mysql_fetch_array(mysql_query(" SELECT FieldValue FROM `xy8vx_rsform_submission_values` WHERE SubmissionId = '$id' AND FieldName = 'Producent' ")); $model = mysql_fetch_array(m
$producent = mysql_fetch_array(mysql_query("
SELECT FieldValue
FROM `xy8vx_rsform_submission_values`
WHERE SubmissionId = '$id' AND FieldName = 'Producent'
"));
$model = mysql_fetch_array(mysql_query("
SELECT FieldValue
FROM `xy8vx_rsform_submission_values`
WHERE SubmissionId = '$id' AND FieldName = 'Model'
"));
$nr_ser= mysql_fetch_array(mysql_query("
SELECT FieldValue
FROM `xy8vx_rsform_submission_values`
WHERE SubmissionId = '$id' AND FieldName = 'Nr seryjny'
"));
是否可以通过一个sql问题获得这3个值?是的,使用IN子句
SELECT FieldName , FieldValue
FROM `xy8vx_rsform_submission_values`
WHERE SubmissionId = '$id' AND FieldName IN ('Producent', 'Model', 'Nr seryjny')
当然,您需要使用循环来获取结果
// $sql is the above sql
$res = mysql_query($sql);
$result = array();
while ($row = mysql_fetch_assoc($res)) {
$result[$row['FieldName']] = $row['FieldValue'];
}
print_r($result);
要获取3行中的3个值,请执行以下操作:
SELECT FieldValue
FROM `xy8vx_rsform_submission_values`
WHERE SubmissionId = '$id' AND
FieldName in ('Producent', 'Model', 'Nr seryjny')
或者,要获取3列中的3个值:
SELECT
(SELECT FieldValue
FROM `xy8vx_rsform_submission_values`
WHERE SubmissionId = '$id' AND FieldName = 'Producent') as Producent,
(SELECT FieldValue
FROM `xy8vx_rsform_submission_values`
WHERE SubmissionId = '$id' AND FieldName = 'Model') as Model,
(SELECT FieldValue
FROM `xy8vx_rsform_submission_values`
WHERE SubmissionId = '$id' AND FieldName = 'Nr seryjny') as NrSeryjny
单个查询将生成这3个查询的结果
$producent = mysql_fetch_array(mysql_query("
SELECT FieldValue
FROM `xy8vx_rsform_submission_values`
WHERE SubmissionId = '$id' AND (FieldName = 'Producent' OR FieldName = 'Model' OR FieldName = 'Nr seryjny')
"));
现在,您必须将结果提取到3行数组中。学习并使用。您在mysql\u fetch\u assoic->mysql\u fetch\u assoc中犯了一个小错误
$id_1=x;
$id_2=y;
$id_3=z;
$name_1="NAME X";
$name_2="NAME Y";
$name_3="NAME Z";
SELECT FieldValue
FROM `xy8vx_rsform_submission_values`
WHERE ((SubmissionId = $id_1 AND FieldName = $name_1) or (SubmissionId = $id_2 AND FieldName = $name_2) or (SubmissionId = $id_3 AND FieldName = $name_3));