如何在php中使用存储在SQL表中的变量名


how to use variable names that are stored in SQL tables in php

我有这样的东西,来自我的sql查询。我正在存储变量名,希望我可以在php中传递变量值,但它不识别这些值。

[{"dataField":"711","caption":"Product Gas Type","max_length":2,"min_length":0,"validationRules":[{"type":"pattern","pattern":"^[a-zA-Z0-9.]{'.$minVal.','.$maxVal.'}$","message":"This field only accepts letters and numbers. The lentgh has to be between '. $minVal .' and '. $maxVal .'"}]},{"dataField":"712","caption":"1St Charge Charging Point","max_length":2,"min_length":0,"validationRules":[{"type":"pattern","pattern":"^[a-zA-Z0-9.]{'.$minVal.','.$maxVal.'}$","message":"This field only accepts letters and numbers. The lentgh has to be between '. $minVal .' and '. $maxVal .'"}]}]

我想说:

   $minVal=1; 
   $maxVal=4;

但是我的$result变量从不识别变量(最小值和最大值)值。我怎么能做这样的事?我理想的最终结果是这样的:

   [{"dataField":"711","caption":"Product Gas Type","max_length":2,"min_length":0,"validationRules":[{"type":"pattern","pattern":"^[a-zA-Z0-9.]{1,4}$","message":"This field only accepts letters and numbers. The lentgh has to be between 1 and 4"}]},{"dataField":"712","caption":"1St Charge Charging Point","max_length":2,"min_length":0,"validationRules":[{"type":"pattern","pattern":"^[a-zA-Z0-9.]{1,4}$","message":"This field only accepts letters and numbers. The lentgh has to be between 1 and 4"}]}]

我已经试过了:

 print_r(str_replace('$minVal', $minVal,$result[$i]->validationRules[0]->pattern));

这打印正确的东西但它不改变我的原始变量($result)而且当我试图为$maxVal添加相同的内容时它将$minVal替换为单词$maxVal

我也试过使用pre_replace,但这甚至不会打印任何东西

我认为问题可能是这个变量名在$result和result里面有validationRules数组所以也许这就是为什么字符串替换不能访问它们并改变整个原始数组

任何帮助将非常感激!

原始输出只是纯文本,不会将变量识别为子字符串。你可以试着这样做(它会起作用):

$raw_output = '{"dataField":"711","caption":"Product Gas Type","max_length":2,"min_length":0,"validationRules":[{"type":"pattern","pattern":"^[a-zA-Z0-9.]{'.$minVal.','.$maxVal.'}$","message":"This field only accepts letters and numbers. The lentgh has to be between '. $minVal .' and '. $maxVal .'"}]},{"dataField":"712","caption":"1St Charge Charging Point","max_length":2,"min_length":0,"validationRules":[{"type":"pattern","pattern":"^[a-zA-Z0-9.]{'.$minVal.','.$maxVal.'}$","message":"This field only accepts letters and numbers. The lentgh has to be between '. $minVal .' and '. $maxVal .'"}]}';

然后爆炸$minVal string:

$explode = explode("' . $minVal . '", $raw_output);
$count = count($explode);
$count_minus_one = $count - 1;
$processed_output = '';
for($i = 0; $i < $count_minus_one; $i++) {
    $processed_output .= $explode[$i] . $minVal;
}
$processed_output .= $explode[$count_minus_one];