0

我发现 ezSQL 库非常有用,但据我所知,其中没有准备好的语句的实现,对吗?还是有什么我不知道的?

我查看了从http://justinvincent.com/ezsql下载的帮助文件

例如:我有一些查询,例如

$stmt = $conn->prepare("INSERT INTO gecici_magaza_detay VALUES ($geciciMagazaId,?,?,?,?)");
$stmt->bind_param("iiss",$gunId,$acikMi,$girisSaati,$cikisSaati);
for($j=0; $j<7; $j++) {
    $gunId = $j+1;
    $acikMi = (empty($acilis[$j]) || empty($kapanis[$j])) ? 0 : 1;
    $girisSaati = $acikMi ? $acilis[$j] : null;
    $cikisSaati = $acikMi ? $kapanis[$j] : null;
    $stmt->execute();
}

其中 $conn 是一个 mysqli 对象。

$conn = new mysqli($servername, $username, $password, $dbname);

但我想完全摆脱它,只使用我的 $db 对象,它是:

$db = new ezSQL_mysqli();

我希望有一种方法可以在 ezSQL 中使用准备好的语句,这会让我更舒服,否则我将不得不同时使用这两种方法。

4

2 回答 2

2

我知道这是一个老问题,但是从 v3.08+ 开始有准备好的语句的选项。

创建连接时,您只需使用$db->prepareOn();. 这是使用此代码的示例

// To get SQL calls to use prepare statements
$db->prepareOn(); // This needs to be called at least once at instance creation

$db->query_prepared('INSERT INTO profile( name, email, phone) VALUES( ?, ?, ? );', [$user, $address, $number]);

$db->query_prepared('SELECT name, email FROM profile WHERE phone = ? OR id != ?', [$number, 5]);
$result = $db->queryResult(); // the last query that has results are stored in `last_result` protected property

foreach ($result as $row) {
    echo $row->name.' '.$row->email;
}

更多信息可以在新的 Wiki 上找到

于 2019-08-30T09:23:05.100 回答
1

不,ezsql 中没有任何内置的准备好的语句功能。

对不安全的变量使用 $db->e​​scape() 函数。这是最安全的选择。

于 2018-05-19T09:59:55.320 回答