Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 替换“替换”&引用;按数组中的值在字符串中_Php_Mysql_Pdo - Fatal编程技术网

Php 替换“替换”&引用;按数组中的值在字符串中

Php 替换“替换”&引用;按数组中的值在字符串中,php,mysql,pdo,Php,Mysql,Pdo,我试图用数组中的值替换字符串中的每个“?”。每个“?”都是数组中的下一个值 我想知道是否有更好的方法可以做到以下几点: $query = 'SELECT * FROM pages WHERE id = ? AND language = ?'; $values = array('1', 'en'); foreach ($values as $value) { $query = preg_replace('/\?/', '\''.$value.'\'', $query, 1); } echo

我试图用数组中的值替换字符串中的每个“?”。每个“?”都是数组中的下一个值

我想知道是否有更好的方法可以做到以下几点:

$query = 'SELECT * FROM pages WHERE id = ? AND language = ?';
$values = array('1', 'en');
foreach ($values as $value) {
    $query = preg_replace('/\?/', '\''.$value.'\'', $query, 1);
}
echo '<pre>'.print_r($query, true).'</pre>';
$query='从id=?和语言=?';
$values=数组('1','en');
foreach($value作为$value){
$query=preg\u replace('/\?/','\'.$value'\''.$query,1);
}
回显“”。打印($query,true)。“”;

希望使用本机PHP(不是PDO扩展)实现这一点。

Mysqli和PDO与PHP一样是本机的

您可以使用from
mysqli
来完成此操作。例如:

i   corresponding variable has type integer
d   corresponding variable has type double
s   corresponding variable has type string
b   corresponding variable is a blob and will be sent in packets
在这种情况下,
i
s
引用参数的类型,如本表所示(链接中提供):


Mysqli和PDO与PHP一样是本地的

您可以使用from
mysqli
来完成此操作。例如:

i   corresponding variable has type integer
d   corresponding variable has type double
s   corresponding variable has type string
b   corresponding variable is a blob and will be sent in packets
在这种情况下,
i
s
引用参数的类型,如本表所示(链接中提供):

使用绑定

在PDO中

$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);

若你们想用一种愚蠢的方式去做,你们可以使用循环或递归

但是使用绑定是愚蠢的

在PDO中

$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);

若你们想用一种愚蠢的方式去做,你们可以使用循环或递归



但是仅仅使用PDO是愚蠢的

?你想达到什么目标?微妙的SQL注入?“想用本机PHP(而不是PDO扩展)实现这一点”-PDO对PHP来说就像任何其他MySQL驱动程序一样是“本机的”.你正在重新发明wheel mate。只要使用PDO。PDO和mysql函数一样是一个扩展。@MMM-moreso不是deprecated@AndVla请定义“更好”。这个代码有效吗?如果是这样的话-你肯定不喜欢它的什么?只使用PDO?你想达到什么目标?微妙的SQL注入?“想用本机PHP(而不是PDO扩展)实现这一点”-PDO对PHP来说就像任何其他MySQL驱动程序一样是“本机的”.你正在重新发明wheel mate。只要使用PDO。PDO和mysql函数一样是一个扩展。@MMM-moreso不是deprecated@AndVla请定义“更好”。这个代码有效吗?如果是的话,你肯定不喜欢其中的什么?谢谢。我尝试这样做的唯一原因是,我想在执行失败时打印带有值的完整查询。无论如何谢谢你;)非常感谢。我尝试这样做的唯一原因是,我想在执行失败时打印带有值的完整查询。无论如何谢谢你;)我应该用什么字母来绑定数组以与
IN()
语句一起使用?@YourCommonSense:正如您在中所看到的,由于
MySQL
处理准备好的语句的方式,使用
IN()
mysqli
有一些缺点。应该提到的是,这篇文章已经有2年历史了。我很好奇,你自己使用mysqli吗?@YourCommonSense是的,虽然我主要用
java
编写程序。在本例中,我将编写一个helper函数来分别绑定它们。是一个关于这个问题的问题。请原谅我的好奇,但是你有没有尝试过任何解决方案?我应该用什么字母来绑定一个数组以与
IN()
语句一起使用?@YourCommonSense:正如你在中所看到的,在()中使用
有一些缺点
使用
mysqli
,因为
MySQL
处理准备好的语句的方式。应该提到的是,这篇文章已经有2年历史了。我很好奇,你自己使用mysqli吗?@YourCommonSense是的,虽然我主要用
java
编写程序。在本例中,我将编写一个helper函数来分别绑定它们。这正是一个关于这个问题的问题。请原谅我的好奇,但你有没有尝试过任何解决方案?
$select = "SELECT * FROM pages WHERE id = ? AND language = ?";
$params = array('param', 'param2');
while(preg_match('/\?/', $select)) $select = str_replace("?", array_shift($params),     $select);